2013-11-08 1 views
0

Я пытаюсь загрузить некоторые активы, используя класс PreloadJS из набора CreateJS, но когда в первом первом событии с прогрессивным запуском загорелись отчеты e.loaded и e.progress как 0.83, числа затем уменьшались в течение следующих нескольких событий до наконец, возвращаясь снова.Событие с событием CreateJS 'PreloadJS неточно

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 

Является ли это потому, что она работает через манифест Initally и не принимает во внимание все сразу?

Проверяет, идет ли прогресс, прежде чем отображать эти результаты в прелоадере, хороший способ убедиться, что он отсортирован сам?

+0

Это странное поведение. PreloadJS будет откладывать 1/3 от прогресса для каждого элемента (независимо от размера), а затем заполнять каждый сегмент байтами для каждого элемента. Вы не должны видеть, что вы показали в своем отчете. Вы можете отправить какой-либо код на сайт сообщества? http://community.createjs.com. Было бы полезно даже те активы, которые вы загружаете. – Lanny

ответ

0

По сути, манифест просто обеспечивает удобный способ борьбы с партией активов, без необходимости самостоятельно их прокручивать. Посмотрите на код, это почти то же самое, что и метод loadFile, но перебирает массив объектов. Поэтому он не делает ничего необычного с точки зрения лучшего расчета прогресса.

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

У вас есть несколько вариантов, хотя, чтобы сделать его более точным.

  1. Если вы не загружаете много, и это займет всего несколько секунд, вы можете просто не использовать событие прогресса. Вместо этого вы можете просто уловить ошибки загрузки или другие зависания.
  2. Если вы загружаете много вещей, и это может занять некоторое время, подумайте, подождите несколько секунд, прежде чем отображать прогресс. Это дает время для добавления достаточного количества материала, которое должно просто двигаться в положительном направлении в направлении 1.