代码之家  ›  专栏  ›  技术社区  ›  Ólafur Waage

是否可以显示闪存文件的下载进度?

  •  4
  • Ólafur Waage  · 技术社区  · 14 年前

    我知道如何设置一个预加载程序,我有工作。但当我调试Flash应用程序并模拟下载时,它的背景是空白的,直到几秒钟过去。

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

    我发现了一些 ProgressEvent.PROGRESS 但这只能在Flash文件下载完成后加载。

    1 回复  |  直到 14 年前
        1
  •  2
  •   fenomas    14 年前

    在内部,SWF中的内容被分割成帧,当Flash播放器加载SWF时,它会在加载帧后立即开始显示和执行帧的内容,即使以后的内容还没有完成。因此,只要您的预加载程序存储在SWF的早期帧中,而您的重内容存储在以后,那么显示预加载程序是非常可能的。

    您可能遇到的问题是,如果您以一种相当常见的方式构建内容,那么所有类对象都存储在第一帧中。最简单的更改方法是在您的FLA文件中,在“发布设置”下的“Flash”AS3设置下,有一个“在帧中导出类:”对话框。如果将该设置从1更改为5,则可以在根时间线的前几帧上放置一个简单的预加载程序(使用帧脚本),并确保所有使用类的内容都放在第五帧之后的某个位置。

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

    或者,您可以围绕整个问题做一个结束运行,并将预加载程序作为一个单独的shell SWF,它只加载本身,然后加载实际内容并显示一个加载程序条。如果人们希望重用预加载程序,通常会选择此选项。