CreateJS的PreloadJS进度事件不准确

CreateJS' PreloadJS progress event inaccurate

本文关键字:事件 不准确 PreloadJS CreateJS      更新时间:2023-09-26

我正在尝试使用 CreateJS 套件中的 PreloadJS 类加载一些资产,但是当第一个进度事件触发报告时e.loadede.progress0.83,然后数字在接下来的几个事件中减少,然后最终再次上升。

t.assets = new createjs.LoadQueue();
t.assets.installPlugin(createjs.Sound);
t.assets.setMaxConnections(10);
t.assets.addEventListener("progress", function(e){
    console.log(e.loaded);
});
t.assets.addEventListener("complete", function(){
    callback();                                          
});
t.assets.loadManifest([
    { id: 'facebook_btn', src: 'img/ingame/facebook_white_btn.png' },
    { id: 'twitter_btn', src: 'img/ingame/twitter_white_btn.png' },
    { id: 'embed_btn', src: 'img/ingame/embed_white_btn.png' },
]);

我在控制台中得到这些结果

0.8333333333333334
0.7142857142857143
0.625
0.5555555555555556
0.5
0.45454545454545453
0.4984983736293216
0.5894074645384125
0.6363636363636364
0.6663361591119469
0.7572452500210378
0.8261679748749072
0.9170770657839982
0.9390634318392196
1

这是因为它最初通过清单工作并且没有立即考虑所有内容吗?

在预加载器中显示这些结果之前,检查进度是否正确是确保其自行整理的好方法?

从本质上讲,清单只是提供了一种方便的方式来处理一批资产,而无需您自己循环访问它们。看看代码,它与 loadFile 方法几乎相同,但循环遍历对象数组。因此,在更好地计算进度方面,它并没有做任何花哨的事情。

http://createjs.com/Docs/PreloadJS/files/.._src_preloadjs_LoadQueue.js.html#l898

不过,您有几个选项可以使其看起来更准确。

  1. 如果您加载的内容不多,并且只需要几秒钟,您可能只想不使用进度事件。相反,您可以只捕获加载错误或其他挂断
  2. 如果您正在加载很多内容并且可能需要一些时间,请考虑在显示进度之前等待几秒钟。这给了清单时间来添加足够多的东西,它应该朝着积极的方向向 1 移动。