Простой прелоадер на 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

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

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

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

Социальные закладки:
Комментарии:
Комментатор
Комментарий добавил(а): Андрей
Дата добавления: 2012-05-23
А, ясно. А чтобы сразу начиналась загрузка нужно внешний использовать, то есть подгружать swf?
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2012-05-23
Андрей, внимательно прочтите последний абзац поста. Прелоадер (встроенный) в любом случае не с начала будет работать. И причём здесь xml? Обычно загрузка xml-файлов начинается только после того, как полностью загрузится flash-приложение.
Комментатор
Комментарий добавил(а): Андрей
Дата добавления: 2012-05-23
А как быть если во втором кадре прописана загрузка xml файла? Он начинает работать с середины, а до этого белый экран
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2012-04-30
Спасибо.
Комментатор
Комментарий добавил(а): Виталий Брагин
Дата добавления: 2012-04-29
Очень радует сайт! Всё доступно и кратко!
Добавить комментарий:







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

Идиот-тест

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

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