Обзор прелоадеров (предварительных загрузчиков, индицирующих степень загрузки Flash-ролика) дает понять, что некоторые авторы допускают множество ошибок, например: считывание исходного размера файла в цикле, усложнение 1-го кадра, использование устаревших версий (некоторые команды уже не поддерживаются). В этом уроке разговор пойдет не о "художественном" оформлении, а именно о принципе реализации.
Нам нужны всего две конструкции:
GetBytesTotal()
и  
GetBytesLoaded()
Первая возвращает размер ролика в байтах, а вторая - размер в байтах загруженной части ролика.
Напишем простейший прелоадер, для этого создадим новый файл. На
Scene1 разместим надписи:
Bytes Total,
Bytes Loaded,
Percent и три "пустые" надписи. Получается примерно следующее:
Теперь в окне
Text Options определяем надписи как динамические и назначаем имена переменных для этих надписей (сверху вниз), например:
TotalField,
LoadField и
PercentField:
Для первого кадра в окне
Actions (установите режим
Expert Mode) пишем код (все кадры - ключевые):
Total = _root.GetBytesTotal();
Переменной
Total (можно не объявлять) присваиваем размер файла в байтах;
TotalField = Total;
Переменной для надписи
TotalField присваиваем значение переменной
Total.
Больше к этому кадру ролик не обращается. (Маловероятно, что размер вашего файла будет изменяться в процессе загрузки).
Во втором кадре пишем код:
Load = _root.getBytesLoaded();
LoadField = Load;
Percent = int(Load / Total * 100);
PercentField = Percent + "%";
Переменной
Load присваиваем значение загруженной части файла;
Переменной для надписи
LoadField присваиваем значение переменной
Load.
Переменной
Percent присваиваем увеличенное в 100 раз округленное значение отношения загруженной части файла к размеру файла, т. е. процентное значение загрузки;
Переменной для надписи
PercentField присваиваем значение переменной
Percent и знак "%".
Третий кадр:
if (load < Total){gotoAndPlay (2);};
Если загружено меньше, чем размер файла - перейти к кадру 2. В первом кадре мы уже все сделали. Зачем туда обращаться?
Кадр 4:
Stop();
В этом же кадре, но на
другом слое уже начинается сам ролик. Разумно нарисовать кнопку
Play и передавать управление на начало ролика.
Если вы сделали все правильно, то получится примерно следующее (это только картинка):
Если не вышло - вот
исходный файл.
В этом уроке описаны только конструкции, позволяющие реализовать любой прелоадер, например с линейкой загрузки и т. п., но необходимо учитывать, что все графические "навороты" загружаются в первом кадре, т. е. чем он больше, тем дольше будет грузиться сам прелоадер!
А нужен ли вообще прелоадер? Ответить на этот вопрос поможет сам Flash!
В режиме
Test Movie в меню
Debug выберите или установите свою скорость загрузки файла (учтите, что реальная скорость загрузки у пользователя будет гораздо ниже указанной):
В меню
View выбираем пункт
Show Streaming:
Тестируем наш ролик на различных скоростях загрузки:
Успехов!
PS. Обратите внимание: реальный размер ролика 2470 байт, а Flash "говорит", что 2468 байт! Я не знаю почему. Кто знает?
Boroda