AS3 getDefinitionByName - 错误#1065:未定义变量{类名}

时间:2012-05-07 11:07:58

标签: actionscript-3 flash

我的问题比标题所暗示的要复杂一些。我在一家拥有20个Flash游戏的公司工作。我们的玩家也有自定义的头像,这些头像在我们的游戏中使用。

我们有一个文件,Avatar.swf,由我们的预加载器加载,然后传递给GameName.swf。我想拿这个Avatar movieclip并创建一个工厂类,这样我们就可以在游戏中有很多实例。

我可以从加载器中获取Avatar动画片段的实例而不会出现问题。我知道有两种方法可以从AS3中的实例中获取构造函数。

1。)Object(myInstance).constructor as Class

2。)getDefinitionByName(getQualifiedClassName(myInstance))as Class

1间歇性地工作但是在3中大约1次我得到由结果实例抛出的空引用错误。我不知道为什么,但这不是一个一致的问题。这几乎就像脚本在那里,但资产库不是。它在调试模式和释放模式下都会发生。使用FlashDevelop和CS5.5进行编译时也会发生这种情况。

2 throws错误#1065:未定义变量头像。我理解这是因为我没有导入Avatar包并声明了Avatar的虚拟实例,但这是重点。例如,如果我们通过添加新的服装项目来更改头像,我们绝对不希望必须通过我们不断扩展的游戏列表并重新编译它们。换句话说,我不想在每个游戏中都使用阿凡达代码,否则会在我们的预加载器中加载它。

有人有任何建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 确保您的Avatar.swf已加载到相同的application domain
  2. 确保您已使用每个头像类at least once(例如,在Avatar.swf的文档类中),或者如果它们是Flash库项目,则将它们导出到Avatar.swf的第1帧。