2

渡した DisplayObject のビットマップを作成するクラス内にこの関数があります。ご覧のとおり、新しいビットマップを作成するたびに、新しい BitmapData オブジェクトと新しい Bitmap オブジェクトを作成しています。

この関数を微調整して、関数を実行するたびにこれら 2 つのオブジェクトを再作成する必要がなくなる方法はありますか?

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;

}

ありがとう、

マーク

4

2 に答える 2

3

表示オブジェクトの寸法が毎回変わる場合は、BitmapData毎回再作成する必要があります。

オブジェクトについては、Bitmap再作成する必要はありません。ビットマップデータを直接設定するだけです:

bm.bitmapData = bitmapData;
于 2012-06-28T10:05:01.800 に答える
2

新しい BitmapData を作成するたびに新しい BitmapData を作成することを避けたい場合は、BitmapData を 1 回だけ予想される最大のサイズで作成し、crop メソッドで最初に yourMap.fillRect(yourMap.rect,0) を使用してそのマップをクリアしてから、描画を行います。トリミング寸法のクリップ四角形を使用して右上隅。パフォーマンスを少し向上させるために、表示する Bitmap オブジェクトの ScrollRect プロパティをトリミングされた寸法に設定できます。

于 2012-06-29T10:02:33.753 に答える