如果名称存储在变量中,请告诉我如何创建对象。
var className:String = 'Config';
var MySprite:Sprite = new ???
class Config extends Sprite {
...
}
答案 0 :(得分:4)
var configClass:Class = getDefinitionByName("Config") as Class;
var configInstance:Config = new configClass as Config;
编辑:Aurel300有一个观点。静态输入完全类是没有意义的,只是因为如果你可以显式地编码它的确切类型,那么你也可以按照正常情况创建一个类。
话虽这么说,你可能会对这种类型有所了解,例如,如果你正在处理你知道它将继承自Sound的音频,或者你知道它会从Sprite继承的图像。因此,在这些情况下,最佳做法是将其静态键入为最低的公共基类。如果它几乎可以是任何类,那么静态输入就没有意义,但是我想不出有什么理由可以创建可以成为任何东西的类。
因此,如果您希望类型为Config或从Config继承的类,那么上面的代码是正确的。否则我的猜测是你期望扩展Sprite的类(所以你可以将它们添加到阶段),然后你将它改为:
var configClass:Class = getDefinitionByName("Config") as Class;
var configInstance:Sprite= new configClass as Sprite;