Flash AS3预加载器直到100%才显示

时间:2016-07-09 08:52:18

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

我意识到这已被多次询问和回答,但即使经过一些阅读,我也无法解决问题。 是)我有的: 预加载器 应该在预加载器之后发生的游戏 真正发生的事情: 所有组件都在预加载器之前加载,这使得预加载器无用哈哈。我已经将“第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

我做错了什么?

2 个答案:

答案 0 :(得分:0)

你应该尝试使用this.root.loaderInfo添加监听器(这种方式更好,虽然你的方式适用于这种情况,所以没关系)。

  1. 无需更改“第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”两次“模拟下载”。

答案 1 :(得分:0)

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