Flash AS3加载最佳实践



我正在创建一个交互式flash应用程序,我需要使用许多声音文件和图像。我目前正在加载资源(图像和声音文件),因为我需要它们。当我在电脑上运行它时,一切都很好,我没有看到任何延迟。在异地计算机上运行它会显示暂停和延迟。我知道这是由于加载资源所需的时间。

我想知道加载资源的最佳实践是什么。我是否应该在一开始就预加载所有内容(这会造成相当长的暂停)?当需要新资源时,是否应该多次短暂暂停?还是有更好的解决方案(我希望是这样)?

我已经在AS3编程了大约3个月,所以我是相对较新的。如果这个问题真的很新手,我很抱歉,但我确实需要弄清楚如何处理延误。

这取决于应用程序的类型:
如果你希望用户体验你的整个应用程序(比如游戏),你应该预加载资源。如果你的应用程序更像一个媒体播放器或一个图片库,大多数用户只能看到一些资源,你应该按需加载资源。

这也取决于资源的大小。你不应该让用户等待太久或产生太多流量。另一方面,与在单个请求中加载每个微小资源相比,执行单个预加载可能更容易。也许你可以在一步中定义更大的集合来避免这种情况。你甚至可以把这两种方法结合起来:预加载一些常用的资源,在后台加载一些其他的东西。

我同意@kapep的观点,你应该在开始时预加载常用的资源。如果有大量用户不需要的资源,可以按需加载。

如果这个测试是顺序的,你可以在"测试问题1"开始后加载"测试问题2"的材料。您可以异步加载,这样应用程序仍然是交互式的(用户可以与测试问题1交互),而更多的材料正在加载(测试问题2资源)

对于预加载资源,我强烈建议使用Greensock库。实际上,通过使用LoaderMax,你可以将要加载的内容排队,然后将加载的内容附加到容器(影片剪辑,精灵等)

下面是加载多个资源的示例代码:
var queue:LoaderMax = new LoaderMaxVars()
                .maxConnections(1)
            .onProgress(onContentProgress)
            .onIOError(onIOErrorHandler)
                            .onComplete(onContentLoaded));
queue.append(new SWFLoader(contentTobeLoaded,new SWFLoaderVars().name(loaderName)));

private function onEmployeeContentLoaded(event:LoaderEvent):void {
  var loadedContent:Array = (event.target as LoaderMax).content;
  ....

最新更新