1

在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%,我可以。

谢谢。

4

1 回答 1

1

大部分时间是 JPEG 编码,而不是将显示对象捕获到 BitmapData。

为了获得更好的性能(牺牲它的运行时间),您必须使用标准 JPEGEncoder 类或/及其异步版本的一些优化版本。

如果您对上述内容不满意,请尝试在谷歌上搜索类似的解决方案:有些人已经解决了这个问题。

注意:您还可以实现一些优化。

  • 您不需要每次都创建新的 Matrix 实例。您可以使用一个实例,Matrix.identity()在绘制之前调用。如果您在一个应用程序会话期间多次执行此操作,这将很有用。
  • 您不需要每次都创建新的 JPEGEncoder 实例。您可以创建一个并将其保存在一些私有静态字段中(例如,在第一次调用时创建它img())。
于 2011-08-10T08:33:57.577 回答