Доступ к тексту в текстовом поле на Sprite

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

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

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

Спасибо!


person David    schedule 07.10.2009    source источник


Ответы (1)


Вы не предоставили полный код, и неясно, добавляете ли вы текстовое поле Childing к 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";
person Amarghosh    schedule 28.10.2009