Flash AS3加载最佳实践

时间:2011-11-24 16:39:29

标签: actionscript-3 flash-cs4 preload

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

我想知道加载资源的最佳做法是什么。我应该在开始时加载所有内容(会产生相当大的停顿)吗?当需要新资源时,在整个过程中多次短暂停顿会更好吗?或者是否有更好的解决方案(我希望是这种情况)?

我已经在AS3中编程了大约3个月,所以我比较新。如果这个问题真的是菜鸟,我很抱歉,但我确实需要弄清楚如何解决这些问题。

3 个答案:

答案 0 :(得分:2)

取决于它的应用类型:
如果您希望用户无论如何都要浏览整个应用程序(例如游戏),您应该预先加载资源。如果您的应用程序更像是媒体播放器或图像库,大多数用户只会看到一些资源,您应该按需加载资源。

它还取决于资源的大小。您不应该让用户等待很长时间或创建大量流量。另一方面,单个预加载可能比在单个请求中加载每个微小资源更容易。也许你可以在一个步骤中定义更大的集合以避免这种情况。您甚至可以结合使用这两种方法:预加载一些常用资源并在后台加载其他一些东西。

答案 1 :(得分:1)

我同意@kapep你应该在开始时预加载常用资源。如果用户可能不需要大量资源,您可以根据需要加载这些资源。

如果此测试是连续的,您可以在“测试问题1”开始后立即加载“测试问题2”材料。您可以异步加载,以便应用程序仍然是交互式的(用户可以与测试问题1交互),同时加载更多材料(测试问题2资源)。

答案 2 :(得分:0)

对于预加载资源,我强烈建议使用Greensock库。实际上,通过使用LoaderMax,您可以对要加载的内容进行排队,然后将加载的内容附加到容器(movieclips,sprite等)。

以下是加载多个资源的示例代码:

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;
  ....