PDA

Просмотр полной версии : Проблемный прелоадер


serdeles
30.04.2010, 15:07
Есть прелоадер (см. аттач). На первый взгляд, нормально работает. Однако, если изображение, имитирующее миувиклип (на втором кадре главной сцены) заменить на более тяжёлое, начинаются проблемы и глюки. Не могу понять, в чём проблема.

Прелоадер состоит из двух частей: графическая шкала (анимация 100 кадров) и текст — показывает, сколько процентов загрузилось. Обе части стоят на первом кадре главной сцены и к обоим символам прописан AS.

Шкала:


onClipEvent (enterFrame) {
percent = Math.floor((_root.getBytesLoaded()/_root.getBytesTotal())*100);
gotoAndPlay(percent);
if (_root.getBytesLoaded()>=_root.getBytesTotal()) {
_root.gotoAndPlay(2);
}
}



Проценты:


onClipEvent (enterFrame) {
percent = Math.floor((_root.getBytesLoaded()/_root.getBytesTotal())*100);
text = percent+"%";
if (_root.getBytesLoaded() >= _root.getBytesTotal()) {
_root.gotoAndPlay(2);
}
}



Помогите, пожалуйста, разобраться, где ошибка.

mooncar
30.04.2010, 15:18
Ошибок нет, прелоадер работает. И с большими картинками тоже.
Разве что сильно устарел морально - сейчас на клипах писать код очень не рекомендуется.
На форуме такой код не обсуждают как правило.

serdeles
30.04.2010, 15:43
Странно он работает, когда большую картинку ставлю (~900 KB). Проценты стоят на 0, шкала двигается.

И вообще, даже если картинка мелкая, отсчёт процентовки начинается сразу с 20-30%...

Да, это старый прелоадер, скачал где-то. Понравилось, что он простой, ибо я не программирую на AS.

mooncar
30.04.2010, 16:02
И вообще, даже если картинка мелкая, отсчёт процентовки начинается сразу с 20-30%....
Все верно. Если картинка в основной части мелкая, то начинает учитываться вес графики самого прелоадера. То есть его доля возрастает, и эти 20-30% - и есть доля веса графики прелоадера в общем весе ролика.
Поэтому и стартует не с 0% - сперва графику должен загрузить, потом расчет сделать. И когда расчет первый сделан, уже есть какой-то вес (ваши 20-30%), то есть вес собственной графики.

serdeles
30.04.2010, 16:12
Но собственной графики у него вообще почти нет. И весит она копейки... Не понимаю я чего-то.

mooncar
30.04.2010, 16:29
Но собственной графики у него вообще почти нет. И весит она копейки...Не скажите.
Копейки - не копейки, а сравнительно с основной графикой - доля высока.

Смотрите 1-й кадр:

pre.swf Movie Report
---------------------

Frame # Frame Bytes Total Bytes Scene
------- ----------- ----------- ----------------
1 4386 4386 Scene 1 (AS 1.0 Classes Export Frame)
2 9469 13855

Scene Shape Bytes Text Bytes ActionScript Bytes
------------------------- ----------- ---------- ------------------
Scene 1 0 0 453

Symbol Shape Bytes Text Bytes ActionScript Bytes
------------------------- ----------- ---------- ------------------
Tween 4 0 0 0
Tween 3 34 0 0
Symbol 7 0 0 0
Symbol 6 0 0 0
percent 0 35 0
Tween 2 0 0 0
Tween 1 0 0 0
preloader 0 0 0

Font Name Bytes Characters
---------------------- --------- --------------
Verdana 20

ActionScript Bytes Location
------------------ --------
1 Scene 1:plazman's work:1
220 Scene 1:plazman's work:1:No instance name assigned(preloader)
231 Scene 1:plazman's work:1:No instance name assigned(percent)
1 Scene 1:plazman's work:2

Bitmap Compressed Compression
----------------------- ---------- -------- -----------
pre1_black.png 1171 17464 JPEG Quality=80
pre1_blue.png 1441 17464 JPEG Quality=80
ps2.gif 9392 44032 Lossless

serdeles
30.04.2010, 16:48
Ужс. А это как-то можно решить?

mooncar
30.04.2010, 18:01
Ничего не "ужс". Обычно таких вопросов при разработке не возникает.
Если у вас вес основного ролика того же порядка, что и вес прелоадера, а именно единицы килобайт, то без прелоадера можно смело обойтись. Эти несчастные килобайты грузятся практически мгновенно.
Прелоадер целесообразно вводить, когда ждать загрузки приходится более 2-5 секунд. и выше, то есть когда сам прелоадер будет весить, как тут, 4 килобайта, а весь ролик, скажем от 200-400 килобайт и выше.
Сделайте основной ролик, а потом смотрите, надо вам или нет прелоадер.
Если надо, берите и делайте. Будет глючить - пишите.

mooncar
30.04.2010, 18:19
Вот вам пример предзагрузчика.
Код записан в кадре.

serdeles
30.04.2010, 21:01
Спасибо большое!

rainbowrussia
01.05.2010, 06:31
Прелоадер целесообразно вводить, когда ждать загрузки приходится более 2-5 секунд. и выше

Еще лучше, если прелоадер будет показываться не сразу, а спустя какое-то время (полсекунды, например), если ролик еще не загрузился. Это решит проблему мелькания прелоадера при быстром канале и когда ролик берется из кеша.

evgen_triplex
30.06.2010, 10:57
не
gotoAndPlay(percent);
а
gotoAndStop(percent);
поэтому ваша шкала постоянно двигается