在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能力。如果处理速度更慢,但没有高达60%的CPU使用率,我没关系。
感谢。
答案 0 :(得分:1)
JPEG编码占用大部分时间,而不是将显示对象捕获到BitmapData。
为了获得更好的性能(牺牲其运行时间),您必须使用标准JPEGEncoder类或/及其异步版本的某些优化版本。
如果您对上述内容不满意,请尝试谷歌搜索类似的解决方案:那里的一些人已经解决了这个问题。
注意:您还可以实施一些优化。
Matrix.identity()
。如果您在一个应用程序会话期间多次执行此操作,这将是有用的。img()
时创建它)。