Доступ к тексту в текстовом поле на Sprite - PullRequest
0 голосов
/ 08 октября 2009

Я добавляю массив спрайтов, каждый со связанным текстовым полем.

Когда щелкает спрайт (или текстовое поле - любое, хотя я хочу, чтобы курсор был рукой), все, что я хочу сделать, - это захватить текст. (например, «Один» в приведенном ниже примере).

Должно быть возможно сделать это с точечной нотацией, используя имя спрайта, но это не работает. То есть 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);

Спасибо!

1 Ответ

0 голосов
/ 28 октября 2009

Вы не дали полный код, и не ясно, добавляете ли вы текстовое поле addChilding в mySprite или mySprite в this. Предполагая, что вы делаете это, вы можете использовать метод getChildByName для доступа к ним (я бы предпочел хранить их в массивах и получать доступ оттуда - но это может занять много времени переделывания). Имейте в виду, что getChildByName возвращает первого дочернего элемента с совпадающим name и, следовательно, не работает в случаях, когда существует несколько дочерних элементов с одинаковым именем.

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