创建一个实现基于类名的接口的类的实例?

时间:2011-02-17 16:14:09

标签: flash actionscript-3 reflection interface

有没有办法生成一个实现基于类的名称的接口的类的实例?

我在尝试:

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 个答案:

答案 0 :(得分:1)

您的ClassReference应为Class类型,因此:

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

这应该有效,除非类定义有问题(它必须包含在构建中,所以你必须至少在程序中的某个地方导入OuterSpaceMovement,或者在构建设置或编译器选项中明确地包含它) )。

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