2011-02-17 79 views
0

有没有办法生成一个类的实例,该类的实例基于该类的名称根据类名创建实现接口的类的实例?

我想:

var ClassReference:Object = getDefinitionByName("movement.OuterSpaceMovement") as IMovement; 
var m:IMovement = new ClassReference as IMovement; 
trace("startup..." + m); 

- 但是我收到一条错误消息的ReferenceError:错误#1065(OuterSpaceMovement)没有定义。

我有一个实现相同的接口(IMovement)几类,但我需要能够产生这些类的新实例,然后通过这些实例的数据类型(IMovement数据类型)的其他类...

于是我尝试:

var ClassReference:Class = getDefinitionByName("OuterSpaceMovement") as Class; 
var m:IMovement = new ClassReference() as IMovement; 

,这似乎并没有工作...但下面

var m:IMovement = new OuterSpaceMovement(); 

呢?

回答

1

你的ClassReference应该是一个Class类型,所以:

var ClassReference:Class = getDefinitionByName("movement.OuterSpaceMovement") as Class; 
var m:IMovement = new ClassReference() as IMovement; 

这应该工作,除非有与类定义一个问题(必须包括在生成,所以你必须在导入OuterSpaceMovement至少一次在你的程序中的某处,或者明确地将它包含在你的编译设置或编译器选项中)。

而且,当然,OuterSpaceMovement必须实现IMovement。 ;)

+0

谢谢,这确实有帮助,但我仍然收到“未定义的”错误消息...添加了上面的一些细节。任何人都可以解释什么区别? – redconservatory 2011-02-17 16:50:13