我知道如何设置一个预加载器并且我已经开始工作了。但是当我调试 Flash 应用程序并模拟下载时,它的背景是空白的,直到几秒钟过去了。
我知道它正在“下载” swf 文件,我想知道是否可以为此显示一个进度条,或者我是否需要让 swf 文件尽可能小并预加载所需的所有内容并将所有资产作为单独的我获取的文件?
我发现了一些东西,ProgressEvent.PROGRESS
但这只会在 Flash 文件下载完成后加载。
我知道如何设置一个预加载器并且我已经开始工作了。但是当我调试 Flash 应用程序并模拟下载时,它的背景是空白的,直到几秒钟过去了。
我知道它正在“下载” swf 文件,我想知道是否可以为此显示一个进度条,或者我是否需要让 swf 文件尽可能小并预加载所需的所有内容并将所有资产作为单独的我获取的文件?
我发现了一些东西,ProgressEvent.PROGRESS
但这只会在 Flash 文件下载完成后加载。
在内部,SWF 中的内容被分成帧,当 Flash 播放器加载 SWF 时,它会在帧加载后立即开始显示和执行帧的内容,即使后面的帧还没有完成。所以只要你的预加载器在SWF的早期帧中存储得更早,而你的重内容存储得更晚,那么显示一个预加载器是很有可能的。
您可能遇到的问题是,如果您以一种相当常见的方式构建内容,那么您的所有类对象都会存储在第一帧中。更改此设置的最简单方法是在 FLA 文件中,在“发布设置”>“Flash”>“AS3 设置”下,有一个“导出框架中的类:”对话框。如果您将该设置从 1 更改为 5,那么您可以在根时间线的前几帧放置一个简单的预加载器(使用帧脚本),并确保使用类的所有内容都放置在第 5 帧之后的某个位置。
如果您不想在预加载器中使用框架脚本,那么使用基于类的预加载器也是可能的,但是您需要进入链接到类的每个对象的属性对话框,并取消选中“在框架中导出” 1" 选项,然后确保它被放置在时间线层次结构中的某个位置以确保它被导出,这有点痛苦。自然,代表预加载器的类对象仍然需要导出到第一帧。
或者您可以对整个问题进行最终运行,并将您的预加载器作为一个单独的 shell SWF,它只是加载自身,然后加载实际内容并显示加载器栏。如果人们想重用预加载器,通常会选择此选项。