【问题标题】:Flash AS3 preloader doesn't show until 100%Flash AS3 预加载器直到 100% 才显示
【发布时间】:2016-07-09 08:52:17
【问题描述】:

我意识到这已被多次询问和回答,但即使经过阅读,我也无法解决此问题。 是)我有的: 预加载器 应该在预加载器之后发生的游戏 真正发生的事情: 所有组件都在预加载器之前加载,这使得预加载器无用哈哈。我已将“第 1 帧中的导出类”更改为“第 2 帧”,但无济于事。 我不想使用外部预加载器。

这是我的代码:

   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;

    preloader.scaleX = loaded/total;

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

}

这是这样的:

https://pp.vk.me/c630919/v630919494/37371/sgdJTWian6Q.jpg

我做错了什么?

【问题讨论】:

  • 您知道如何在代码中设置断点并运行调试器吗?如果你能做到这一点,你可能会自己解决它。我也总是将值跟踪到输出窗口。
  • @NealDavis 好吧,我通常在 JS 中跟踪 "1",当我有懒惰的时候。您是否在课堂上执行此操作?
  • 确保您的预加载器仅在第 1 帧上,没有别的。并确保不要将资源从库中导出到第 1 帧。Flash 将始终在执行任何操作之前加载第一帧,因此某些内容仍然存在
  • 您应该检查两件事。首先是确定帧大小,如果你的帧 1 是 SWF 的 99%,那么你做错了什么。如果它很小但问题仍然存在,我知道 IE11 行为首先完全加载 SWF,然后才显示 Flash 播放器窗口,使预加载器无用。我不知道其他浏览器会有这样的行为,但这可能是一种趋势。
  • 您是否通过直接加载 swf 进行测试?如果是这种情况,请尝试将其嵌入到 html 页面中

标签: actionscript-3 flash actionscript preloader flash-cc


【解决方案1】:

您应该尝试使用 this.root.loaderInfo 添加侦听器(尽管您的方式在这种情况下有效,但这种方式更好,所以没关系)。

  1. “export classes in frame 1 => 2”不用改,保持默认即可;
  2. 第一帧代码可以是这样的:
    import flash.events.ProgressEvent; this.root.loaderInfo.addEventListener(ProgressEvent.PROGRESS,loaderProgressHandler); function loaderProgressHandler(evt:ProgressEvent):void { preloader.scaleX = evt.bytesLoaded /evt.bytesTotal; }
  3. 第二帧(你实际上想显示)代码如下:
    stop();
  4. 仅此而已。可能由于本地模拟速度太快,您无法清楚地看到进度。您可以尝试使用快捷键“Ctrl + Enter”两次“模拟下载”。

【讨论】:

    【解决方案2】:

    为了避免弄乱类导出框架,我通常使用第二个 SWF 来预加载。它完美地工作。您只需要确保在加载大型 SWF 后清除加载器影片中的所有内存。 通过这种方式,您可以保留一个超级简化的预加载器。在某些项目中,我只是在游戏服务器连接等待时间中使用了相同的预加载器。它用途广泛,不会打扰您的主要应用逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 2016-03-23
      相关资源
      最近更新 更多