Flash AS3 динамически добавляется детьми. Проблема с присвоением им имен и названию каждого - PullRequest
3 голосов
/ 12 декабря 2010

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

При нажатии он добавляет изображение на сцену, и мне нужно, чтобы они светились по одному, с помощью 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: Спасибо за ответ . Я постараюсь сделать это с массивом, учитывая, что я хочу сделать их съемными позже. Смысл проекта в том, чтобы создать звезды на сцене, где вы щелкаете, и точка перемещается от одной звезды к другой, заставляя их светиться при попадании на них.

Ответы [ 2 ]

3 голосов
/ 12 декабря 2010

Если вам нужен доступ к ним позже по имени, вы можете сделать это, назвав символы:

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

Я бы добавил их в массив или вектор вместо этого.Этот способ облегчает доступ к ним позже.Это также хорошо при их утилизации.

...
var fl_MyInstance:LibrarySymbol = new LibrarySymbol();
_symbolList.push(fl_MyInstance)
addChild(fl_MyInstance);
...
1 голос
/ 12 декабря 2010

Вы можете обращаться к ним в массиве, используя 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

...