Простой прелоадер на ActionScript 3.0

Продолжаю тему простых прелоадеров в стиле «code only», но на этот раз будем делать индикатор загрузки для проектов на ActionScript 3.0 в среде разработки Adobe Flash. Итак, сразу переходим к делу.

Код ActionScript 3.0:

/* устанавливаем значение переменных */ var w:uint = 200; // ширина прелоадера var h:uint = 10; // высота прелоадера var colorFon:uint = 0xcccccc; // цвет фона прелоадера var color:uint = 0x333333; // цвет индикатора загрузки /* останавливаем воспроизведение флеш-ролика в первом кадре */ stop(); /* рисуем контейнер прелоадера */ var preloaderContainer:Sprite = new Sprite(); preloaderContainer.graphics.lineStyle(1,color,1); preloaderContainer.graphics.beginFill(colorFon,1); preloaderContainer.graphics.drawRect(0,0,w,h); preloaderContainer.graphics.endFill(); addChild(preloaderContainer); /* помещаем наш прелоадер на середину флеш-ролика */ preloaderContainer.x = (stage.stageWidth - w) / 2; preloaderContainer.y = (stage.stageHeight - h) / 2; /* рисуем индикатор загрузки */ var band:Sprite = new Sprite(); band.graphics.beginFill(color,1); band.graphics.drawRect(0,0,w,h); band.graphics.endFill(); preloaderContainer.addChild(band); /* в каждом новом кадре проверяем объём загруженной информации и на основе этой информации изменяем индикатор загрузки */ addEventListener(Event.ENTER_FRAME, onEnterFrames); function onEnterFrames(event:Event) { var bLoaded:uint = loaderInfo.bytesLoaded; var bTotal:uint = loaderInfo.bytesTotal; band.scaleX = bLoaded / bTotal; /* если флеш-ролик загружен полностью, то удаляем сам прелоадер и переходим на следующий кадр */ if (bLoaded >= bTotal) { removeChild(preloaderContainer); removeEventListener(Event.ENTER_FRAME, onEnterFrames); nextFrame(); // или gotoAndPlay(номер_кадра); } }

Вот и всё. Теперь просто копируем приведённый выше код и вставляем на временную шкалу первого (!) кадра вашего флеш-ролика (флеш-проекта под ActionScript 3.0).

Результат:

Загрузить Adobe Flash Player

Примечание: здесь демонстрируется только внешний вид прелоадера и реальные данные не загружаются.

Конечно, вы в любой момент можете внести изменения в код: изменить ширину и высоту прелоадера, цвет фона и полосы загрузки. Для удобства все эти параметры вынесены отдельно в виде переменных и снабжены комментариями.

Особо замечу, что для корректной работы прелоадера необходимо, чтобы первый кадр (где и размещается наш код предзагрузчика) был пустым. Там не надо размещать каких-либо видимых объектов или звуков. Он должен быть абсолютно пустым. Дело в том, что индикатор загрузки начнёт свою работу только после того, как будет загружено содержимое первого кадра. Если в первом кадре много «тяжёлых» объектов, то отображение процесса загрузки может начаться и с 30%, и с 50%, а то и с 80% (были случаи:-(). Согласитесь, это не очень красиво :-)

Если же первый кадр пуст, а прелоадер всё равно начинает работу с большим опозданием, то, скорее всего, вы импортировали какие-то объекты в первый кадр. Проверить это просто. Идём в библиотеку проекта, наводим на объекты и вызываем контекстное меню объектов. В этом контекстном меню выбираем пункт «Свойства». Здесь вы можете наблюдать примерно следующее:

Экспортировать в первый кадр

Вот вам и причина странной работы предзагрузчика. Объект (или объекты) экспортируются в первый кадр флеш-ролика, что вызывает задержку в работе прелоадера.

Я в таких случаях делал следующее: снимал галочку у пункта «Экспортировать в первый кадр» (не перепутайте с галочкой «Экспортировать для ActionScript»!), а сами объекты перетаскивал, например, на второй кадр флеш-ролика (основное содержимое при этом размещал на 3-м и последующих кадрах). Как правило, это помогало :-)

Впрочем, определённый объём информации в любом случае будет загружаться до появления на сцене прелоадера и с этим ничего не поделаешь (хотя, конечно, можно сделать внешний прелоадер...).

Автор: admin

Дата добавления: 2011-10-07

Просмотров: 12937

Рейтинг поста: +22-

Правила перепечатки

Социальные закладки:
Комментарии:
Комментатор
Комментарий добавил(а): Эдуард
Дата добавления: 2012-06-18
вот спасибо большое
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2012-06-18
Эдуард, постарался ответить на ваш вопрос - Простой прелоадер на ActionScript 3.0. Дополнение.
Комментатор
Комментарий добавил(а): Эдуард
Дата добавления: 2012-06-16
Всем привет.
Спасибо за прелоадер.

Подскажите как добавить к этому прелоадеру кол-во загруженного в килобайтах и в процентах???

Очень очень надо)))
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2012-06-01
Покажите исходник - найдём причину.
Комментатор
Комментарий добавил(а): NN
Дата добавления: 2012-06-01
почему то в swf после вставки этого скрипта просто черный фон. ни анимация, ни прелоадер не отображаются почему такое может быть?
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2012-05-25
Спасибо.
Комментатор
Комментарий добавил(а): Андрей
Дата добавления: 2012-05-23
Хороший сайт, уже третью тему скопировал) Много всего полезного.
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2012-05-23
У тех внешних прелоадеров, которые встречал, иногда возникают проблемы с масштабированием загруженных роликов. И это очень не красиво.
Комментатор
Комментарий добавил(а): Андрей
Дата добавления: 2012-05-23
Поставил Ваш на первый кадр, а на втором подгружаю swf другим прелоадером, вроде почти без пробелов работает. А какие недостатки внешнего? и у Вас на сайте есть внешний?
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2012-05-23
Это надо смотреть на конкретном примере. Иногда и встроенный прелоадер замечательно работает (да, пропускает несколько процентов в самом начале, но это не критично). Но иногда проект таков, что как не крути, а работать встроенный прелоадер начинает только процентов с 80-90. Тогда без внешнего прелоадера не обойтись. Но внешний прелоадер тоже имеет свои недостатки.
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Страница 1 из 2: 12
Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика