Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Динамическое создание объектов в AS3.0 (Flash CS3) (http://www.flasher.ru/forum/showthread.php?t=95547)

AlexFomin 08.05.2007 11:59

Динамическое создание объектов в AS3.0 (Flash CS3)
 
Добрый день!
В очередной раз молю о помощи:)
Задачка следующая: создать некий менеджер слоев, т.е. по кнопке Add вызывается функция, добавляющая следующий слой, который ляжет поверх уже существующих, в дальнейшем можно будет менять положение этих слоев по глубине, и если нужно, удалять. Так вот, количество слоев в общем случае неопределено. В AS2 решил бы эту задачу так: использовал бы клип(который представляет слой) из библиотеки и пристегивал бы его attachMovie, ну или создавал бы контейнер createEmptyMovieClip, но главное что в этих методах можно было сделать автоматическое присвоение имени экземпляра. Но в документации на AS3 в разделе AS2.0 Migration указано что оба метода удалены и использовать addChild и new соответственно, но как в данном случае организовать автоматическое создание клипов с разными именами экземпляров. Трудно переключиться на другую идеалогию, но необходимо по условиям задачи AS3.0:o
Подскажите плз какую концепцию использовать в данном случае?.:confused:

etc 08.05.2007 12:04

У наследников DisplayObject есть свойство name, его можно задать, а обратиться можно, используя getChildByName. (Не забывать ещё кастить в нужный тип). Хотя, что мешает держать ссылки на клипы в массиве и обращаться к нужным элементам потом?

AlexFomin 08.05.2007 13:23

Вроде допер, главное было понять что например двухкратный вызов метода аналогичного addLayer() приведет к созданию двух разных child объектов для DisplayObjectContainer, несмотря на одинаковое имя newClip

Код:

private var i:uint = 0;
public function addLayer() {
        var newClip:MovieClip = new MovieClip();
        newClip.name = "clip" + String(i);
        newClip.x = i*50;
        newClip.y = i*50;
        Stage.root.addChild(newClip);
        i++;
}

Спасибо:)


Часовой пояс GMT +4, время: 10:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.