AS3 — динамическое присоединение класса с использованием переменной

Это довольно прямой запрос. У меня есть куча мувиклипов в библиотеке, настроенных на экспорт для ActionScript следующим образом:

Overlay_1
Overlay_2
Overlay_3
...
...
...

Их может быть больше, и их имена могут быть любыми (например, не в порядке возрастания).

В настоящее время, чтобы добавить один из этих мувиклипов на сцену, я бы использовал следующий скрипт:

var overlay_1:Overlay_1 = new Overlay_1();
addChild(overlay_1);

Проблема с этим. Я хочу установить переменную со строкой, скажем, «Overlay_6», а затем добавить мувиклип из библиотеки с этим именем экспорта на сцену.

Например:

var overlayToAdd:String = "Overlay_6";

var overlayCotent:this[overlayToAdd] = new this[overlayToAdd+"()"];
addChild(overlayCotent);

Конечным результатом является то, что любая строка, которую я установил для переменной 'overlayToAdd', выбирается из библиотеки и добавляется на сцену.

Если бы кто-то мог помочь, я был бы так благодарен! Затем я смогу установить переменную overlayToAdd в значения из массивов или как захочу!

В старые времена (AS2) я бы просто использовал функцию eval, но сейчас ее нет.


person TheD2000    schedule 12.08.2015    source источник
comment
возможный дубликат Can Я создаю экземпляр класса из AS3, просто зная его имя?   -  person null    schedule 12.08.2015


Ответы (1)


Я решил это! Итак, мое решение выглядит следующим образом, надеюсь, это поможет другим!

var overlayName:String;
var overlayClass:Class;
var overlaySprite:Sprite;
overlayName="Overlay_1"; //This can be set by pretty much anything like an array value etc.
overlayClass=getDefinitionByName(overlayName) as Class;
overlaySprite=new overlayClass();
addChild(overlaySprite);
person TheD2000    schedule 12.08.2015