我在一个类中有这个函数,它创建了我传入的任何DisplayObject的位图。 正如您将看到的,每次创建新位图时,我都会创建一个新的BitmapData对象和一个新的Bitmap对象。
有没有办法调整这个函数,所以每次运行函数时我都不再需要重新创建这两个对象?
private var bitmapData:BitmapData;
private var bm:Bitmap;
crop(someSprite.width, someSprite.height, someSprite);
private function crop(_width:Number, _height:Number, displayObject:DisplayObject):void {
bitmapData.dispose();
bitmapData = new BitmapData( _width, _height, false, 0xFFFFFFFF );
bitmapData.draw(displayObject);
bm = null;
bm = new Bitmap(bitmapData, PixelSnapping.ALWAYS, true);
bm.smoothing = true;
bm.alpha = 0;
}
谢谢,
标记
答案 0 :(得分:2)
如果显示对象尺寸每次都改变,则每次都必须重新创建BitmapData
。
对于Bitmap
对象,您无需重新创建它。您可以直接设置位图数据:
bm.bitmapData = bitmapData;
答案 1 :(得分:2)
如果你想避免每次创建一个新的BitmapData,你只需要创建一个你期望的最大尺寸的BitmapData,你首先使用你的Map.fillRect(yourMap.rect,0)清除那个地图,然后再做使用具有裁剪尺寸的剪辑矩形在右上角绘制。为了获得额外的微小性能提升,您可以设置Bitmap对象的ScrollRect属性,将其显示为裁剪尺寸。