AS3 Preloader内部还是外部?

时间:2011-02-13 16:43:29

标签: flash actionscript-3 preloader

我想知道加载我的Flash游戏的最佳方式是什么。我知道如何制作一个外部预加载器,但如果我想将游戏的.swf上传到像newgrounds这样的网站,我猜我需要一个内部预加载器。

我已经尝试了几次但是我的游戏只在swf 100%加载后显示。虽然它的加载我只看到带有灰色“......”的白色屏幕,我猜测它是内置于flash播放器中的。

我有一个名为AsteroidsGame.fla的.fla,它有一些类的库,游戏的结构被编码成一个名为AsteroidsGame.as的.as文件。也许这会导致问题?我不知道,但我真的很感激任何帮助让预加载器运行起来。

感谢。

2 个答案:

答案 0 :(得分:1)

外部。使用适当的安全权限,您应该能够在大多数环境中将内容从远程位置加载到shell中。

使用内部加载程序加载时看到的延迟可能是由运行时为actionscript导出的库资产引起的。它们将被导出到第一帧。在该帧加载之前,您无法看到任何预加载,并且您的预加载器逻辑将在完成导出这些资产后跳转到第一帧的加载百分比。

答案 1 :(得分:1)

简而言之,加载时,flash播放器将从第1帧开始,并将继续坐在那里直到第1帧上的所有数据都已加载。只有这样才能进入下一帧。通过选中“文件 - >发布者设置”下“Flash”选项卡中的“生成构建报告”复选框,您可以获得有关每帧输出多少字节数据的详细报告

要进行简单的加载显示,请在第1帧中添加名为“loader_txt”的TextField,并添加此代码:

  stop();

  this.addEventListener(Event.ENTER_FRAME, loading);

  function loading(e:Event):void{

      var total:Number = this.stage.loaderInfo.bytesTotal;
      var loaded:Number = this.stage.loaderInfo.bytesLoaded;

      loader_txt.text = Math.floor((loaded/total)*100)+ "%";

    if (total == loaded){
      play();
      this.removeEventListener(Event.ENTER_FRAME, loading);
    }

  }

要确保您的资源和动作代码导出超出第1帧,以便上面的代码可以在Flash影片开始加载时立即启动,请转到“文件 - >发布设置”,选择“Flash”标签,然后点击“设置...”按钮位于“脚本”的右侧。应该会出现一个对话框。在该对话框的“导出帧中的类:”下,输入2。

对于图书馆中的资产,您可能需要做类似的事情。右键单击库资源并选择属性,您将看到取消选中“在第1帧中导出”的选项。如果取消选中它(这意味着flash资源可以在加载此资源之前开始播放),则必须确保在时间轴中的第1帧之外的某个位置引用该符号,否则Flash将从编辑中省略它。

祝你好运!