0

我正在尝试使用 CreateJS 套件中的 PreloadJS 类加载一些资产,但是当第一个进度事件触发报告时e.loadede.progress数字0.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

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

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

4

1 回答 1

0

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

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

您有几个选项可以让它看起来更准确。

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