只有加载器图像在第1帧中导出,但加载程序仍然只显示在100%

时间:2012-04-07 13:03:40

标签: actionscript-3 flash preloader

正如标题所说,文件正确加载但加载屏幕最后才会闪烁。

第1帧中唯一导出的是装载程序图像,这非常小。

是否可能存在正在加载的事物队列,并且加载程序映像位于该队列的底部?因为这是添加到项目中的最后一件事

1 个答案:

答案 0 :(得分:3)

如果您的预加载器仅在文件加载后显示,这意味着您仍然有其他对象链接到第1帧。闪存对此非常挑剔,并且很容易将事物拖到第1帧上而不管您是设置。编译时,Flash会构建一个依赖关系图,以确定每个框架上需要哪些项目。如果它认为资产需要早于导出框架设置,它将忽略该设置并将资产推送到该框架。特别是,您的文档类直接引用的任何类都将被自动拉到第1帧。

在文件,发布设置中检查“生成大小报告”,Flash可以帮助您查看有多少数据导出到第1帧。以下是一些提示,以确保所有内容都链接到正确的框架:

  • 在“发布设置”,“Flash”,“ActionScript设置”中,确保“将类的导出框架”设置为2 或更高。
  • 确保库符号在其链接属性中显示“在第2帧导出”。较旧版本的Flash可以在第1帧上导出它们,而不管类导出帧如何。在这种情况下,您必须使用oldschool方法取消选中“在第1帧上导出”选项,并手动将这些符号拖到第2帧的时间轴上。
  • 不要直接引用文档类或主时间轴上的类。 Document类及其引用的所有资源始终放在第1帧上。任何时候var f : MyClass;进入您的文档类或根时间轴,然后您引用MyClass,Flash将自动将其拉到第1帧。

为避免在预加载器中直接引用主应用程序类,您希望使用以下内容间接实例化它:

var gameClass : Class = flash.utils.getDefinitionByName("Game") as Class;
var game : Sprite = new gameClass();

在这种情况下,Preloader将成为文档类,并在加载SWF时间接创建Game类。这避免了对Game及其内容的任何直接引用。