Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проблемный прелоадер (http://www.flasher.ru/forum/showthread.php?t=139424)

serdeles 30.04.2010 15:07

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

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

Шкала:

Код AS1/AS2:

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


Проценты:

Код AS1/AS2:

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

Цитата:

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

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

serdeles 30.04.2010 16:12

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

mooncar 30.04.2010 16:29

Цитата:

Сообщение от serdeles (Сообщение 905089)
Но собственной графики у него вообще почти нет. И весит она копейки...

Не скажите.
Копейки - не копейки, а сравнительно с основной графикой - доля высока.

Смотрите 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

Вложений: 1
Вот вам пример предзагрузчика.
Код записан в кадре.

serdeles 30.04.2010 21:01

Спасибо большое!

rainbowrussia 01.05.2010 06:31

Цитата:

Сообщение от mooncar (Сообщение 905125)
Прелоадер целесообразно вводить, когда ждать загрузки приходится более 2-5 секунд. и выше

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

evgen_triplex 30.06.2010 10:57

не
Код AS1/AS2:

gotoAndPlay(percent);

а
Код AS1/AS2:

gotoAndStop(percent);

поэтому ваша шкала постоянно двигается


Часовой пояс GMT +4, время: 13:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.