我可以多次绘制相同的DisplayObject吗?

时间:2015-06-14 18:25:16

标签: actionscript-3 flash

我有一个循环运行,并将数组中的TextField添加到Sprite,并将Sprite绘制到BitmapData对象。当我引用之前绘制的TextField时,BitmapData没有任何内容。

public class Pocket extends Sprite
{
    public var inventory:Array = [textField1, textField2, textField3]; //array of TextFields, populated by another class
    public var order:Array = [0,1,2,1]; //array of ints indicating the order of which items in "inventory" should be displayed (the error lies when an element is repeated - in this case, 1

    public function getItem(index:int):Array
    {
        var bitmaps:Array = new Array();

        for(var i:int = 0; i < order.length; i++)
        {
            var bitmapData:BitmapData = new BitmapData(32, 32);

            var background:Sprite = new Sprite();
            background.graphics.beginFill();
            background.graphics.drawRect(0,0,32,32);
            background.graphics.endFill();
            bitmapData.draw(background); //this always executes as expected

            var sprite:Sprite = new Sprite();
            sprite.addChild(inventory[order[i]]);

            bitmapData.draw(sprite);

            var bitmap:Bitmap = new Bitmap(bitmapData);
            bitmaps.push(bitmap);

            sprite.removeChild(inventory[order[i]]);
        }
        return bitmaps;
    }
}

当调用order中的最后一个元素(1)时,生成的位图不包含文本字段。

Example

当循环第一次运行时,将TextField inventory[0]添加到SpriteSprite将按预期绘制。使用inventory[1]绘制第二个框。但是,当我第二次运行相同的代码试图绘制inventory[1]时,没有任何反应。如果我尝试绘制inventory[0],也会发生相同情况,但如果我使用尚未添加到TextField的{​​{1}}(例如Sprite,则应该存在),它按预期绘制。

有什么想法吗? 提前谢谢。

0 个答案:

没有答案
相关问题