2015-08-01 3 views
0

Возьмите этот упрощенный кодActionscript - Динамически назначая импортированные объекты

import assets.panels.About1; 
import assets.panels.About2; 
import assets.panels.About3; 

private var _panel:*; 

_panel = new About1(); 

Это можно определить About1 как переменную, так что я могу установить что-то вроде

var aboutPanel = 'About3'; 

Так код, исполняемый будет

_panel = new About3(); 
+0

Не могли бы вы подробнее объяснить свою проблему? – akmozo

+0

У меня есть большое количество панелей, основанных на выборе пользователя. Мне нужно открыть правильную панель. В настоящее время у меня есть гигантский оператор if для каждого условия, где я назначаю требуемую панель для объекта панели. Если бы вместо этого я мог просто сказать _panel = new MYPANELVARIABLE(); это будет намного опережать меньше кода. –

+0

Я отказался от решения «fash.utils.getDefinitionByName», потому что вы должны инициировать каждый импорт, чтобы остановить компилятор, удалив их, поэтому это решение фактически меняет один блок кода для другого в моем сценарии. –

ответ

0

Для этого вы можете использовать flash.utils.getDefinitionByName следующим образом:

var class_name:String = 'MyClass'; 

var my_class:Class = flash.utils.getDefinitionByName(class_name) as Class; 

trace(my_class); // gives : [class MyClass] 

var obj = new my_class(); 
addChild(obj); 

trace(obj);   // gives : [object MyClass] 

Надеюсь, что это может помочь.

+0

Спасибо, это похоже на решение. –

 Смежные вопросы

  • Нет связанных вопросов^_^