我想根据字符串值调用构造函数,而不是很多if条件
var valueString:String = "myNewClassB";
var value:Class = valueString as Class;
new value() // new value() == new myNewClassB()
Run Code Online (Sandbox Code Playgroud)
我知道它会失败,我需要帮助.谢谢.
var ClassReference:Class = getDefinitionByName("myNewClassB");
var instance = new ClassReference();
Run Code Online (Sandbox Code Playgroud)
那是基础,萌芽.
如果要这样做,有两种方法,将类分配给对象中的示例所创建的类列表:
var list:Object = {
classA: FirstClass,
classB: SecondClass,
classC: ThirdClass
}
Run Code Online (Sandbox Code Playgroud)
而不是用字符串调用它们:
var desiredObject:* = new (list["classA"] as Class)();
Run Code Online (Sandbox Code Playgroud)
或者您也可以使用getDefinitionBtName,但如果您想获得一个类,则需要提供一个全名(包含)
var desiredClass = getDefinitionByName( "com.somedomain.SomeClass" );
Run Code Online (Sandbox Code Playgroud)
如果您正在编写SWF内容而不想从中获取类,则应使用该加载器 loaderInfo.applicationDomain.getDefinition( "....class" );
您还可以通过以下方式检查类是否定义:
loaderInfo.applicationDomain.hasDefinition( "....class" );
Run Code Online (Sandbox Code Playgroud)