使用循环创建同一位图的多个子级(AS3)

时间:2014-02-13 22:55:06

标签: actionscript-3

我有一个位图,我想在舞台上的不同位置不止一个位图。我猜这可以通过循环实现,但我不确定如何。

目前我有:

[[Embed(source="../lib/Spikes.png")] //Spikes
    public var SpikesImage:Class;

public var spikesBitmap:Bitmap = new SpikesImage();

1 个答案:

答案 0 :(得分:1)

使用循环创建SpikesImage的多个实例:

for(var i:int = 0; i < 10; i++)
{
    var spikes:Bitmap = new SpikesImage();
    spikes.x = i * spikes.width;

    addChild(spikes);
}

虽然这会比你在舞台上有一个Bitmap消耗更多的内存,并且使用copyPixels()SpikesImage的数据多次绘制到那个上。

一个例子:

var screen:Bitmap = new Bitmap();
screen.bitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);

var spikes:Bitmap = new SpikesImage();
var drawPosition:Point = new Point();
var drawRect:Rectangle = spikes.bitmapData.rect;

for(var i:int = 0; i < 10; i++)
{
    drawPosition.x = i * spikes.width;

    screen.bitmapData.copyPixels(
        spikes.bitmapData,
        drawRect,
        drawPosition
    );
}

addChild(screen);

然而,这种方法的缺点是你失去了以任何方式转换图形的能力(旋转,缩放)。