我有一个循环运行,并将数组中的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)时,生成的位图不包含文本字段。
当循环第一次运行时,将TextField
inventory[0]
添加到Sprite
,Sprite
将按预期绘制。使用inventory[1]
绘制第二个框。但是,当我第二次运行相同的代码试图绘制inventory[1]
时,没有任何反应。如果我尝试绘制inventory[0]
,也会发生相同情况,但如果我使用尚未添加到TextField
的{{1}}(例如Sprite
,则应该存在),它按预期绘制。
有什么想法吗? 提前谢谢。