在 as3 中截取显示对象的屏幕截图最有效的资源方法是什么
在 as3 中截取显示对象的屏幕截图最有效的资源方法是什么?
这是我当前正在使用的代码:
public static function img(o:DisplayObject,width:int,height:int):ByteArray
{
var b:BitmapData = new BitmapData(width,height,true,0x000000);
b.draw(o,new Matrix(o.width/width,0,0,o.height/height),null,null,null,true);
return new JPGEncoder(35).encode(b);
}
但是它占用了太多的CPU资源。如果处理速度慢一些,但 CPU 利用率不超过 60%,我也没关系。
谢谢。
What's the most resources efficient way to take a screenshot of display object in as3?
This is the code I am currently using:
public static function img(o:DisplayObject,width:int,height:int):ByteArray
{
var b:BitmapData = new BitmapData(width,height,true,0x000000);
b.draw(o,new Matrix(o.width/width,0,0,o.height/height),null,null,null,true);
return new JPGEncoder(35).encode(b);
}
But it takes too much CPU power. I am okay if it will be processed more slowly, but without CPU utilization up to 60%.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
JPEG 编码占用了大部分时间,而不是将显示对象捕获到 BitmapData。
为了获得更好的性能(牺牲其运行时间),您必须使用标准 JPEGEncoder 类的某些优化版本或/及其异步版本。
如果您对上述内容不满意,请尝试谷歌搜索类似的解决方案:有些人已经有了解决了问题。
注意:您还可以实施一些优化。
Matrix.identity()
。如果您在一个应用程序会话期间多次执行此操作,这将很有用。img()
时创建它)。It's JPEG encoding that takes most of the time, and not capturing of a displayobject to a BitmapData.
To achieve better performance (sacrificing its running time) you have to use some optimized version of standard JPEGEncoder class or/and its asynchronous version.
If you are not satisfied with the above, try googling for similar solutions: some guys out there have already solved the problem.
Note: you can also implement a couple of optimizations.
Matrix.identity()
before drawing. This will be of use if you perform this operation many times during one application session.img()
).