2010-06-01 82 views
4

我知道如何设置预加载器,并且我已经工作了。但是,当我调试Flash应用程序并模拟下载时,它有一个空白的背景,直到几秒钟过去。是否可以显示Flash文件的下载进度?

我知道这是“下载”的SWF文件,我想知道如果我可以显示进度条,或者我需要有尽可能小的SWF文件,并预加载所需的一切,并拥有所有资产作为一个单独的文件我提取?

我发现了一些与ProgressEvent.PROGRESS但Flash文件后,该只加载完成下载。

+0

问题是你多么小可以使预加载?为什么“它几秒钟之后才会有空白的背景”这样一个大问题? – Earlz 2010-06-01 20:57:49

+0

我想知道的是,我应该都嵌入到SWF,并有它只是“下载”或有一个小的SWF用于预先加载的inital下载后所需要的一切。 – 2010-06-01 20:59:38

+1

我以为Flash播放器会在第一帧下载足够的SWF后立即启动。 – 2010-06-01 21:34:34

回答

2

内部,一个SWF里面的东西被分成帧,当Flash播放器加载一个SWF,它就会开始显示,一旦他们加载帧执行的内容,即使后来者不完成了。因此,只要您的预加载器存储在SWF的早期帧中,并且稍后存储了大量内容,则很可能会显示预加载器。

你可能运行到的是,如果你在一个合理的通常排序的方式建立的内容,那么你所有的类对象获取存储在第一帧的问题。最简单的方法是在FLA文件的“发布设置”>“Flash”>“AS3设置”下,有一个“导出框架中的类”对话框。如果将该设置从1更改为5,那么可以在根时间轴的第一对连接帧上放置一个简单的预加载器(使用帧脚本),并确保使用类的所有内容都放置在第5帧之后的某处。

如果您不想在预加载器中使用框架脚本,那么也可以使用基于类的预加载器,但是您需要进入链接到类的每个对象的属性对话框,然后取消选中“在第1帧中导出”选项,然后确保它放置在时间轴层次结构中的某处,以确保它被导出,这更加痛苦。当然,表示预加载器的类对象仍然需要导出到第一帧。

或者你也可以做周围的整个问题的最终运行,使您的预加载器作为一个单独的shell SWF,它只是加载自身,然后加载实际内容并显示装料杆。通常人们选择这个选项,如果他们想重新使用preloader。

+0

谢谢你,一个很好的答案。 – 2010-06-02 07:41:05