2010-12-11 2 views
3

Мне нужно получить доступ к каждому ребенку после того, как я динамически добавила их на сцену, но у меня возникли проблемы с выяснением того, как это сделать.Flash AS3 динамически добавляет детей. Проблема с их именованием и вызовом каждого разделенного

Нажатие на кнопку добавляет изображение на сцену, и мне нужно, чтобы они светились по одному за раз, с помощью функции for(), но я не могу понять, как назвать их каждый со своим именем (name + i) для доступа к ним позже.

Спасибо заранее

stage.addEventListener(MouseEvent.MOUSE_DOWN, clicky); 
var i = 1; 
function clicky(event:MouseEvent):void 
{ 
    i++; 
    var fl_MyInstance:LibrarySymbol = new LibrarySymbol(); 
    addChild(fl_MyInstance); 


    var myStageX:Number = Math.round(event.stageX); 
    var myStageY:Number = Math.round(event.stageY); 

    fl_MyInstance.x = myStageX; 
    fl_MyInstance.y = myStageY; 

     if(myStageX<150){ 
      fl_MyInstance.scaleX = fl_MyInstance.scaleY = 1-(myStageX/300); 
     }else{ 
      fl_MyInstance.scaleX = fl_MyInstance.scaleY = 0.5; 
      } 
} 

EDIT: Спасибо за ваши ответы. Я попытаюсь сделать это с помощью массива, учитывая, что я хочу сделать их съемными позже. Целью проекта является создание звезд на сцене, где вы нажимаете и перемещаете точку от одной звезды до другой, заставляя их светиться, когда она ударяет их.

ответ

3

Если вам необходимо получить доступ к ним позже имя, которое вы могли бы сделать это, называя символы:

... 
var fl_MyInstance:LibrarySymbol = new LibrarySymbol(); 
fl_MyInstance.name = "symbol_" + i; 
addChild(fl_MyInstance); 
... 

Я хотел бы добавить их в массив или Vector вместо этого. Таким образом, упрощается доступ к ним позже. Это также хорошо при их утилизации.

... 
var fl_MyInstance:LibrarySymbol = new LibrarySymbol(); 
_symbolList.push(fl_MyInstance) 
addChild(fl_MyInstance); 
... 
+0

+1. Как я это делаю. Упоминание об использовании, если векторы заставили вас голосовать. – sberry

1

Вы можете получить к ним доступ в массиве, используя getChildren. Нечто подобное должно работать для вас:

var children:ArrayCollection = this.getChildren(); 

foreach(var child:LibrarySymbol in children) 
{ 
...do whatever 
} 

Если вы хотите получить доступ к ним по отдельности вы можете использовать GetChild или getChildAt или что-то подобное. Использование соглашений об именах с динамическими данными, вероятно, самый сложный способ пройти через него.

Для получения дополнительной информации: http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_08.html