2009-10-07 64 views
0

我添加了一個精靈數組,每個精靈都有一個關聯的文本字段。訪問Sprite上Textfield的文本

當點擊精靈(或文本字段 - 任何一個,但我希望光標是一隻手)時,我想要做的就是抓取文本。 (例如下面的例子中的「一個」)。

它應該有可能使用點符號來完成,使用精靈的名字,但這是行不通的。也就是說,Sprite_1.textField_1.text不起作用。

當我點擊精靈時,我可以添加一個事件偵聽器,但目標是精靈,而精靈對象不包含文本字段對象。

非常令人沮喪,應該是簡單的...任何人都知道如何做到這一點?

for (var i : int = 0;i < 5; i++) 
{ 
var myText:TextField = new TextField(); 
myText.text = someText; 
    //say "One" first time through, then "Two" second time thru, etc. 
myText.name = "textField_" + i; 
mySprite.addEventListener(MouseEvent.CLICK, grabText); 

var mySprite:Sprite = new Sprite(); 
mySprite.graphics.lineStyle(2,0x000000); 
mySprite.graphics.beginFill(0xff0000, 1); 
mySprite.graphics.drawRect(0, 0, myText.width, myText.height); 
mySprite.graphics.endFill(); 
mySprite.useHandCursor = true; 
mySprite.mouseChildren = false; 
mySprite.buttonMode = true; 
mySprite.name = "Sprite_" + i; 
mySprite.addEventListener(MouseEvent.CLICK, grabText); 

謝謝!

回答

0

你還沒有給出完整的代碼,並且不清楚你是否將addChilding文本字段設置爲mySpritemySpritethis。假設你正在這樣做,你可以使用getChildByName方法來訪問它們(我寧願將它們存儲在數組中並從那裏訪問 - 但這可能需要很多重新設計)。被警告getChildByName返回匹配name的第一個孩子,因此在有多個同名孩子的情況下失敗。

var sprite:Sprite = Sprite(this.getChildByName("Sprite_1")); 
var tf:TextField = TextField(sprite.getChildByName("textField_1")); 
tf.text = "some other text";