Flash体系结构和“TypeError:错误#1009:”

时间:2013-08-28 18:13:16

标签: actionscript-3 actionscript flash swfloader

这是一个架构问题,我希望解决一些正在出现的大问题UI问题。

背景:我正在构建Flash中的游戏内UI(使用Flash CC)以与Scaleform一起使用。我介于两者之间,知识渊博;可能足够后者是危险的。

我目前的架构是:

  • 父:这将管理和创建UI的所有实例。它有自己的FLA / SWF文件。
  • 组件1:这是父组件的一个组件,具有自己的FLA / SWF文件
  • 组件2:这是父级的另一个组件,具有自己的FLA / SWF文件
  • 共享HUD资产:它包含所有元素(它自己的FLA / SWF文件)之间的公共元素;它导出所有符号,并将它们导入相应组件的库中
  • 共享资产:这在所有UI(按钮,背景等)中都很常见。它也像HUD资产那样导出/导入

这里的目的是允许在每个组件文件中存储多种类型的组件,HUD选择使用哪种组件并“组装”HUD。艺术家可以在组件和资产文件中工作,而无需触及较大的HUD文件,并且不得不在代码中捣乱。

最初,我尝试将所有资产存储在主要父级中,但Flash对于管理多个布局的导入符号来说有点痛苦。我最终会遇到重复的字体,破坏的链接等等。

接下来,我尝试使用纯AS创建实例,即导入的AS文件中的“component = new component()”,但看起来我遇到了在Flash IDE中创建的布局问题(并不是专门在AS中完成的) )父母无法访问。 (我假设这是一个问题;我可能会误读一些在本网站和其他网站上遇到过类似问题的人。)

现在,我决定加载SWF文件应该解决这个问题,但是我在这些加载的SWF文件中遇到了一些“TypeError:Error#1009”;特别是一个由另一个Scaleform组件(ButtonBar)引用的按钮(AnimatedToggleButton)。它和ButtonBar都从共享资源导入到HUD组件,但AnimatedToggleButton在其他任何地方都未使用。它正确地导出和导入,并且在组件SWF中编译时起作用,但是当加载SWF时,它在父级中作为缺少的类/ null出现。我尝试了所有常用的技巧,等待舞台等等。

对于这种事情,这是正确的架构吗?如果是的话,导入符号的处理是什么?除非使用它们,否则它们不存在?

1 个答案:

答案 0 :(得分:0)

您是否在符号属性中选中了“在第1帧中导出”?

如果没有,那么是的,只有舞台上出现的符号才会被导出并可供父SWF访问。