【问题标题】:Flash AS3 loading best practicesFlash AS3 加载最佳实践
【发布时间】:2012-01-05 19:23:27
【问题描述】:

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

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

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

【问题讨论】:

    标签: actionscript-3 flash-cs4 preload


    【解决方案1】:

    这取决于它是什么类型的应用程序:
    如果您希望用户浏览您的整个应用程序(例如游戏),您应该预先加载资源。如果您的应用更像是媒体播放器或图片库,大多数用户只能看到少量资源,您应该按需加载资源。

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

    【讨论】:

    • 该应用程序是针对儿童的测试。大多数资源都将需要,但由于程序中的分支可能不会使用一些资源。大多数资源为 20 - 200 kb。目前我的总资源约为 12MB,但预计在完成应用程序后将达到 50 - 70 MB 以上。
    • @user922467 这对于预加载恕我直言,特别是如果它会增长。我可能会在用户回答当前问题时尝试为即将到来的问题加载资源。如果下一个问题取决于当前问题的答案,则可能是一个问题......要么让用户等待,要么让他加载他不需要的东西。这由您决定。
    • 感谢您的帮助。我会尝试提前预加载几个问题。
    【解决方案2】:

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

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

    【讨论】:

    • 看起来两个重复的答案将我指向同一个方向。感谢您的帮助。
    【解决方案3】:

    对于预加载资源,我强烈建议使用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;
      ....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2010-10-03
      • 2011-04-26
      • 2020-01-21
      • 2010-12-15
      • 1970-01-01
      • 2011-03-14
      相关资源
      最近更新 更多