материалы :: прелоадинг часть 1. для всего клипа
 
-------------------------
>DHTML лаборатория
-------------------------
>Новости
Архив (8.5.2003)
Архив (18.4.2003)
Архив (4.4.2003)
Архив (24.3.2003)
Архив (7.3.2003)
Архив (18.2.2003)
Архив (4.2.2003)
Архив (21.1.2003)
Архив (6.1.2003)
Архив (23.12.2002)
-------------------------
>Лаборатория
Лабиринт
Scorch
Машинка
Пуповина
Соты
Мост
Кривые
С Новым Годом!
Снежок
Рыбки вернулись
Рыбки
Аркада
Микромашинка
-------------------------
>Материалы
Прелоадинг. Часть 1.
Физмат. Часть 1.
Календарь
Чат, чтоб не молчать
-------------------------
>Ссылки
VM Studio
Флэш Потрошитель
Flasher.ru
Ivan Dembicki
actionscript.org
junioronline
bit-101
flashcomponents
...
-------------------------

-------------------------
>Контакты
>Загрузить Flash
>Translate

>Поиск на сайте


-------------------------
Хостинг от UkrHosting
  Самым простым прелоадером для всего клипа будет являться остановка его воспроизведения до тех пор, пока он полностью не загрузится. В сети очень часто встречается пример того, как это сделать используя три кадра. Мне этот вариант не кажется оптимальным. Мы будем использовать два кадра. Для этого делаем следующее:

1. Создаем в Flash новый документ. Делаем в нем два кадра. Во второй кладем какую-нибудь картинку (для веса) и пишем:
stop();

2. В первом кадре пишем:
_root.stop(); // останавливаем воспроизведение клипа
_root.onEnterFrame = function() {
// назначаем обработку с частотой смены кадров в клипе
if (this.getBytesLoaded() == this.getBytesTotal()) {
// если кол-во загруженных байт равно общему кол-ву
delete this.onEnterFrame;
// удаляем обработчик
this.play();
// запускаем воспроизведение клипа
}
};

3. Два раза нажимаем в редакторе Ctrl+Enter и смотрим на дело рук своих. Пока клип полностью не загрузится на экране пусто. После окончания загрузки мы увидим картинку и воспроизведение клипа остановится.
Вот и все. Все очень просто. Но, скажете вы, как-то не красиво.. Да и пользователь не понимает, что происходит. Переходим дальше.

4. Изменим код в первом кадре:
_root.stop();
_root.onEnterFrame = function() {
if (this.getBytesLoaded() == this.getBytesTotal()) {
delete this.onEnterFrame;
this.info_txt.removeTextField();
// удаляем текстовое поле
this.play();
} else {
// если клип загрузился не полностью
var info_str = "Загрузка..."
// присваиваем переменной значение
this.createTextField("info_txt", 1, 0, 0, 0, 0);
// создаем текстовое поле info_txt
this.info_txt.autoSize = "left";
// устанавливаем свойство - авторазмер
this.info_txt.text = info_str;
// выводим в текстовое поле надпись "Загрузка..."
}
};

5. Если мы хотим показать процент загрузки, надо заменить код в стоке 10 на:
var info_str = "Загружено - " + Math.round(this.getBytesLoaded()/this.getBytesTotal()*100) + " %";

6. Подобным образом можно выводить любые другие данные, например:
   - время до окончания загрузки;
   - скорость соединения.
Замечание: не рекомендую использовать для вывода значения "байт загружено", "байт осталось" и подобные, т.к. методы getBytesLoaded() и getBytesTotal() возвращают некомпрессированый размер файла.

7. Дополним наш код выводом изображения прогресс бара. Для этого заменим в первом кадре код, находящийся в блоке
else {}:
var percent = Math.round(this.getBytesLoaded()/this.getBytesTotal()*100);
// присваиваем переменной значение процента загрузки
this.moveTo(0, -5);
this.lineStyle(10, 0x000000);
this.lineTo(100, -5);
// рисуем линию - фон
this.moveTo(0, -5);
this.lineStyle(7, 0xCCCCCC);
this.lineTo(percent, -5);
// рисуем линию - бар
var info_str = "Загружено - "+percent+" %";
this.createTextField("info_txt", 1, 0, 0, 0, 0);
this.info_txt.autoSize = "left";
this.info_txt.text = info_str;

8. Тестируем.

Все. Мы рассмотрели принцип работы прелоадера. Конечно это не исчерпывающе, но я думаю, что вы уже все поняли и в головах роятся идеи. Мое пожелание вам - пусть ваш прелоадер будет совершенно особенным, не похожим на другие.
В следующих частях мы рассмотрим прелоадеры на все случаи жизни. Выделим общее и разберемся в частных особенностях.

Материал подготовил: Борис Анферов