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

Flash 创建基于类名实现接口的类的实例?,flash,actionscript-3,reflection,interface,Flash,Actionscript 3,Reflection,Interface,有没有一种方法可以根据类的名称生成实现接口的类的实例 我正在努力: var ClassReference:Object = getDefinitionByName("movement.OuterSpaceMovement") as IMovement; var m:IMovement = new ClassReference as IMovement; trace("startup..." + m); -但我收到一条错误消息ReferenceError:error#1065(Outerspac

有没有一种方法可以根据类的名称生成实现接口的类的实例

我正在努力:

var ClassReference:Object = getDefinitionByName("movement.OuterSpaceMovement") as IMovement;
var m:IMovement = new ClassReference as IMovement;
trace("startup..." + m);
-但我收到一条错误消息ReferenceError:error#1065(OuterspaceMotation)未定义

我有几个类实现相同的接口(IMovement),但我需要能够生成这些类的新实例,然后将这些实例作为数据类型(IMovement数据类型)传递给其他类

于是我试着:

var ClassReference:Class = getDefinitionByName("OuterSpaceMovement") as Class;
var m:IMovement = new ClassReference() as IMovement;
这似乎不起作用…但是下面

var m:IMovement = new OuterSpaceMovement();

您的类引用是否应为Class类型,因此:

var ClassReference:Class = getDefinitionByName("movement.OuterSpaceMovement") as Class;
var m:IMovement = new ClassReference() as IMovement;
除非类定义有问题(它必须包含在生成中,因此您必须在程序中的某个位置至少导入一次OuterSpaceMovement,或者在生成设置或编译器选项中显式地包含它),否则这应该是可行的


当然,外层空间移动必须实现IMovement

谢谢,这确实有帮助,但我仍然收到一条“未定义”的错误消息…上面添加了一些细节。有人能解释一下区别是什么吗?就像我说的:为了让getDefinitionByName()找到它,必须在某个时候包含该类<代码>新建外部空间移动()是显式的:编译器导入类文件,因为它“知道”所需的类。当您按名称调用该类时,没有显式引用,您必须手动确保编译器包含该类定义-如果没有,则在运行时找不到该类定义!
newouterspacemovement()
实际上可能在程序中的任何位置,那么getDefinitionByName()调用也可以工作。