Как добавить все символы в папке библиотеки на сцену во время выполнения - PullRequest
0 голосов
/ 26 августа 2009

Я только что отправил этот вопрос, но я не вижу, был ли он где-либо опубликован, поэтому я прошу прощения, если это дубликат.

Для проекта Flash CS4 я постоянно импортирую новые изображения, преобразую их в мувиклипы и сохраняю их в библиотеке в папке «Орнаменты». Все эти украшения должны быть на сцене в определенном месте, когда программа инициализируется. Вместо того, чтобы перетаскивать новые символы на сцену каждый раз, когда я добавляю новый, возможно ли добавить все символы из папки библиотеки «Орнамент» на сцену во время выполнения?

Спасибо

1 Ответ

1 голос
/ 26 августа 2009

Вы можете сделать это в коде, если хотите, но вам все равно придется добавить названия символов в код. Таким образом, эта папка просто удобна для организации в библиотеке CS4 и не переводится в код (AFAIK).

Чтобы создать экземпляр элемента в AS3, просто щелкните правой кнопкой мыши символ в библиотеке и установите флажок «Экспорт для ActionScript». Если вы не видите его, нажмите кнопку «Дополнительно». По умолчанию класс будет называться именем символа. Это будет класс, который вы можете создать в ActionScript для создания экземпляра на сцене.

Вы можете сохранить массив имен орнаментов и прокрутить их, добавив их на сцену:

var ornaments:Array = [OrnamentGold, OrnamentSilver, OrnamentBronze];

for each(var ornament:Class in ornaments)
{
    var ornamentClip:MovieClip = new ornament();
    addChild(ornamentClip);
}

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

const NUM_ORNAMENTS:int = 5;

for(var i:int = 0; i < NUM_ORNAMENTS; i++)
{
    // ornaments are names Ornament0, Ornament1, Ornament2, etc. in the library
    var ornamentClass:Class = new getDefinitionByName("Ornament" + i) as Class;
    var ornamentClip:MovieClip = new ornamentClass();
    addChild(ornamentClip);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...