новый конструктор со строкой - PullRequest
0 голосов
/ 20 ноября 2011

Вместо многих условных выражений я хочу вызвать конструктор в соответствии со строковым значением

var valueString:String = "myNewClassB";
var value:Class = valueString as Class; 

new value() // new value() == new myNewClassB() 

Я знаю, что это потерпит неудачу, мне нужна помощь. Спасибо.

Ответы [ 2 ]

6 голосов
/ 20 ноября 2011
var ClassReference:Class = getDefinitionByName("myNewClassB");
var instance = new ClassReference();

Это основы, приятель.

5 голосов
/ 21 ноября 2011

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

var list:Object = {
 classA: FirstClass,
 classB: SecondClass,
 classC: ThirdClass
}

, и затем вызвать их строкой:

var desiredObject:* = new (list["classA"] as Class)();

или вы также можете использовать getDefinitionBtName, но если вы хотите получить класс, вам нужно указать полное имя (вместе с пакетом)

var desiredClass = getDefinitionByName( "com.somedomain.SomeClass" );

Если вы загружаете SWF-контенти чем вы хотите получить класс из него, вы должны использовать этот загрузчик loaderInfo.applicationDomain.getDefinition( "....class" );

, вы также можете проверить, определен ли класс:

loaderInfo.applicationDomain.hasDefinition( "....class" );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...