我这样做是为了渲染两艘相同的船只:
[Embed(source = "ship.png")]
public var ShipBitmap:Class;
var ship1:Sprite = new Sprite();
ship1.addChild( new ShipBitmap() );
var ship2:Sprite = new Sprite();
ship2.addChild( new ShipBitmap() );
这是推荐的方式,还是我以任何方式浪费记忆?创建两个ShipBitmap
是不必要的。另外,我有点不确定只为容器使用精灵。
答案 0 :(得分:4)
您可以共享一个BitmapData
实例,并在不同的上下文中使用此实例。
这是一个简单的例子:
package {
import flash.display.Bitmap;
import mx.core.BitmapAsset;
import flash.display.BitmapData;
import flash.display.Sprite;
public class Main extends Sprite {
[Embed(source="test.jpeg", mimeType="image/jpeg")]
private var TestImage : Class;
public function Main() {
//extract the BitmapData from the BitmapAsset
var testImageBitmapData : BitmapData = BitmapAsset(new TestImage()).bitmapData;
var sprite1 : Sprite = new Sprite();
sprite1.x = 100;
sprite1.y = 100;
//display the BitmapData with a Bitmap container
sprite1.addChild(new Bitmap(testImageBitmapData));
addChild(sprite1);
var sprite2 : Sprite = new Sprite();
sprite2.x = 200;
sprite2.y = 200;
sprite2.addChild(new Bitmap(testImageBitmapData));
addChild(sprite2);
var sprite3 : Sprite = new Sprite();
sprite3.x = 300;
sprite3.y = 300;
//draw the BitmapData directly into the Sprite
sprite3.graphics.beginBitmapFill(testImageBitmapData,null,false,true);
sprite3.graphics.drawRect(0, 0, testImageBitmapData.width, testImageBitmapData.height);
sprite3.graphics.endFill();
addChild(sprite3);
}
}
}
答案 1 :(得分:-2)
您可以创建一次对象的实例并像这样引用它:
[Embed(source = "ship.png")]
public var ShipBitmap:Class = new ShipBitmap();
var ship1:Sprite = new Sprite();
ship1.addChild( ShipBitmap );
var ship2:Sprite = new Sprite();
ship2.addChild( ShipBitmap );