我需要创建一个没有外部文件的单一 SWF,因此我试图将一个内部预加载器添加到我的具有 [嵌入] 资产的 Flash 项目中。我知道 [embed] 会导致预加载器出现问题,因为它将资产放在第 1 帧上。我已经尝试了这些帖子中推荐的解决方案,您将文档类设置为预加载器类:
我可以让它工作,但只有当我注释掉任何涉及舞台的代码行时,否则我会收到“错误 #1009:无法访问空对象引用的属性或方法”。不过,这些线是必不可少的,那么有人知道如何在舞台上修复这些错误吗?
我需要创建一个没有外部文件的单一 SWF,因此我试图将一个内部预加载器添加到我的具有 [嵌入] 资产的 Flash 项目中。我知道 [embed] 会导致预加载器出现问题,因为它将资产放在第 1 帧上。我已经尝试了这些帖子中推荐的解决方案,您将文档类设置为预加载器类:
我可以让它工作,但只有当我注释掉任何涉及舞台的代码行时,否则我会收到“错误 #1009:无法访问空对象引用的属性或方法”。不过,这些线是必不可少的,那么有人知道如何在舞台上修复这些错误吗?
你还没有发布你的代码或你的 fla,所以我所能做的就是分享对我有用的东西。
首先,我不会使用 Embed。相反,请使用 swc。我发现嵌入可能不可靠,因为实际上将整个资产放入其中(至少在使用 Flash Builder + Flash Pro 发布时,这是我的工作流程)。
将资产放入 swc 后,请尝试以下步骤:
play()
的那样运行。所以它真的可以这么简单。如果你需要它更复杂,给你的预加载器图形一个实例名称并设置为它设置一个 getter/setter 对,然后使用 setter 触发访问阶段的逻辑。你几乎可以保证此时有一个有效的阶段。警告:如果你确实使用了时间,如果你试图跳转到一个尚未加载的帧,你会得到奇怪的结果,所以一定要检查一个给定的帧是否已经加载,如果它靠近您的主时间线结束并且您的主时间线在调用goToAndPlay()
或之前有大量资产goToAndStop()
。
一些可能对您有进一步帮助的参考资料: