Actionscript 3 如果类名是字符串,是否可以构造该类的实例?

Actionscript 3 如果类名是字符串,是否可以构造该类的实例?,actionscript-3,flash,apache-flex,dynamic,actionscript,Actionscript 3,Flash,Apache Flex,Dynamic,Actionscript,如果类名是字符串,是否可以构造该类的实例?例如: var className:String = "MyClass"; var obj:* = new getClass(className)(); 这是可能的。您必须使用getDefinitionByName(名称:String):Object 让舒尔确保您所参考的课程在swf文件中可用 var ClassReference:Class = getDefinitionByName("flash.display.Sprite") as Class

如果类名是字符串,是否可以构造该类的实例?例如:

var className:String = "MyClass";
var obj:* = new getClass(className)();

这是可能的。您必须使用
getDefinitionByName(名称:String):Object
让舒尔确保您所参考的课程在swf文件中可用

 var ClassReference:Class = getDefinitionByName("flash.display.Sprite") as Class;
 var instance:Object = new ClassReference();

这是可能的。您必须使用
getDefinitionByName(名称:String):Object
让舒尔确保您所参考的课程在swf文件中可用

 var ClassReference:Class = getDefinitionByName("flash.display.Sprite") as Class;
 var instance:Object = new ClassReference();
试试这个:

import flash.utils.getDefinitionByName;
var className:String = "MyClass";
var obj:Object = new (getDefinitionByName(className) as Class)();
试试这个:

import flash.utils.getDefinitionByName;
var className:String = "MyClass";
var obj:Object = new (getDefinitionByName(className) as Class)();
是的

var myClass:Class = getDefinitionByName(className) as Class;
var instance:Object = new myClass();
是的

var myClass:Class = getDefinitionByName(className) as Class;
var instance:Object = new myClass();

虽然给出的答案是正确的,但如果您使用的是应用程序域,则这可能不起作用

要考虑应用程序域,请使用以下方法:

public static function forName(name:String, applicationDomain:ApplicationDomain = null):Class {
    applicationDomain ||= ApplicationDomain.currentDomain;
    var result:Class;

    while (!applicationDomain.hasDefinition(name)) {
        if (applicationDomain.parentDomain) {
            applicationDomain = applicationDomain.parentDomain;
        } else {
            break;
        }
    }

    try {
        result = applicationDomain.getDefinition(name) as Class;
    } catch (e:ReferenceError) {
        throw new ClassNotFoundError("A class with the name '" + name + "' could not be found.");
    }
    return result;
}

var myClass:Class = forName(className);
var instance:Object = new myClass();

库中提供了此方法和许多其他实用程序

虽然给出的答案是正确的,但如果您使用的是应用程序域,则此方法可能不起作用

要考虑应用程序域,请使用以下方法:

public static function forName(name:String, applicationDomain:ApplicationDomain = null):Class {
    applicationDomain ||= ApplicationDomain.currentDomain;
    var result:Class;

    while (!applicationDomain.hasDefinition(name)) {
        if (applicationDomain.parentDomain) {
            applicationDomain = applicationDomain.parentDomain;
        } else {
            break;
        }
    }

    try {
        result = applicationDomain.getDefinition(name) as Class;
    } catch (e:ReferenceError) {
        throw new ClassNotFoundError("A class with the name '" + name + "' could not be found.");
    }
    return result;
}

var myClass:Class = forName(className);
var instance:Object = new myClass();

库中提供了此方法和许多其他实用程序

。。不要忘记在类名前面加上完整的包路径。。。不要忘记在类名前面加上完整的包路径。