这是一个架构问题,我希望能解决我正在处理的大型 UI 问题中出现的一些问题。
背景:我正在用 Flash(使用 Flash CC)构建一个游戏内 UI,用于 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:错误 #1009”;具体来说,另一个 Scaleform 组件 (ButtonBar) 引用的按钮 (AnimatedToggleButton)。它和 ButtonBar 都是从 Shared Assets 导入到 HUD 组件的,但 AnimatedToggleButton 在其他任何地方都没有使用。它可以正确导出和导入,并且在组件 SWF 中编译时可以正常工作,但是在加载 SWF 时,它会在父级中显示为缺少的类/空值。我尝试了所有常用的技巧,等待舞台等。
对于这类事情,这是正确的架构吗?如果是,那么导入符号的处理方式是什么?除非被使用,否则它们不存在吗?