CreateJS的PreloadJS进度事件不准确

时间:2013-11-08 13:59:00

标签: javascript easeljs

我正在尝试使用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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

你有两个选择,但要让它看起来更准确。

  1. 如果您没有加载太多而且只需要几秒钟,您可能只是想不使用progress事件。相反,您可以捕获加载错误或其他挂起。
  2. 如果您要加载很多东西,可能需要一些时间,请考虑等待几秒钟才能显示进度。这给了明确的时间来添加足够的东西,它应该朝着1向正方向移动。