【问题标题】:Is there a better way to fix my AS2 preloader?有没有更好的方法来修复我的 AS2 预加载器?
【发布时间】:2014-05-23 14:48:18
【问题描述】:

我在场景 1 中有一个带有预加载器的游戏,时间轴上有以下代码。

stop();
loadingBar._xscale = 1;
var loadingCall:Number = setInterval(preloadSite, 50);

function preloadSite():Void {
var siteLoaded:Number = _root.getBytesLoaded();
var siteTotal:Number = _root.getBytesTotal();
var percentage:Number = Math.round(siteLoaded/siteTotal*100);
loadingBar._xscale = percentage;

  bytesDisplay.text = percentage + "%";
  if (siteLoaded >= siteTotal) {
    clearInterval(loadingCall);
    gotoAndPlay("StartMenu", 1);
  }
}

当没有音乐文件链接到第 1 帧时,代码可以正常工作。如果有音乐文件链接,则所有内容都会在预加载器出现之前加载。

我发现这个关于预加载器的 webpage 很棒,它谈到了链接问题,并建议我将所有大文件放在第 2 帧,在预加载器之后,然后跳过它们。我按照建议将我的大文件放在第 2 帧上,并且预加载器再次工作。

我的问题是,有没有更好的方法来做到这一点。这个解决方案看起来像个 hack。

【问题讨论】:

    标签: optimization actionscript-2 preloading


    【解决方案1】:

    我能想到的唯一更好的选择是不要将 MP3 文件存储在 Flash 文件中,而是将其与 Flash 文件的内容一起加载到预加载器中。前提是您将 MP3 文件存储在其他在线位置(例如服务器上)。

    stop();
    
    loadingBar._xscale = 1;
    
    var sound:Sound = new Sound();
    sound.loadSound("http://www.example.com/sound.mp3", false);
    
    var loadingCall:Number = setInterval(preloadSite, 50);
    
    function preloadSite():Void {   
        var siteLoaded:Number = _root.getBytesLoaded()+sound.getBytesLoaded();
        var siteTotal:Number = _root.getBytesTotal()+sound.getBytesTotal();
        var percentage:Number = Math.round(siteLoaded / siteTotal * 100);
        loadingBar._xscale = percentage;
    
        bytesDisplay.text = percentage + "%";
        if (siteLoaded >= siteTotal) {
            clearInterval(loadingCall);
            gotoAndPlay("StartMenu", 1);
            sound.start();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 2013-04-04
      • 2014-04-25
      • 2011-05-05
      • 1970-01-01
      • 2019-07-01
      相关资源
      最近更新 更多