создаем документ ActionScript3.0, и создам 2 кадра и 3слоя. Кадр первого слоя растягиваем на все кадры, и рисуем на нем на курсор. Нажимаем F8, преобразовываем его в фрагмент ролика(MovieClip) и ставим точку регистрации в левом верхнем углу. Называем его cursor, он должен находится на всех кадрах. Называем этот слой Cursor и больше не трогаем.
Второй слой называем Prelouder. Здесь будет проводится основная работа. Проверяем, каждый из 2 кадров это отдельный пустой ключевой кадр. Рисуем прямоугольник, жмем F8. Теперь определяемся, если мы хотим что бы полоса увеличивалась сразу в обе стороны, ставим точку регистрации в центре, а если хотим чтобы она увеличивалась из левого угла к правому, ставим точку регистрации в левом верхнем углу. Называем этот прямоугольник preLouder и размещаем поудобнее на сцене.Под ним делаем динамическое поле под названием tf. Второй кадр называем compl. В первом кадре слоя Prelouder пишем код:
- import flash.events.*;//импортируем нужные нам элементы
- this.stop();//останавливаем воспроизведение
- stage.showDefaultContextMenu = false;//прячем стандартные пункты контекстного меню
- addEventListener(Event.ENTER_FRAME, Update);
- // Описание функции Update
- function Update(e : Event):void {
- var bytesLoaded:Number = stage.loaderInfo.bytesLoaded;
- // перемнная, хранящая число загруженых байт нашего приложения
- var bytesTotal:Number = stage.loaderInfo.bytesTotal;
- // переменная, хранящая обьём приложения в байтах
- var s:String = "";
- // обьявление пустой строчной перемнной, в которой будут храниться проценты загрузки
- var percent:Number = 0;
- // обьявление пустой числовой переменной
- if (bytesTotal>0){
- // ждем когда приложение узнает свой настоящий размер
- percent = Math.floor(bytesLoaded/bytesTotal*100);
- //Считаем сколько процентов уже загрузилось и округляем до целых
- s = percent+"%"
- // Прибавляем к числу знак %
- preLouder.width = percent*4;
- //длинна прямоугольника пропорциональна равна числу загружнных байтов
- //длинна прямоугольника в 100% = 400, подставляете как вам удобно
- tf.text = s;
- //показываем в поле tf проценты загрузки
- }
- // проверяем, полностью ли загрузилось приожение
- if (bytesLoaded == bytesTotal) {
- // если полностью, то удаляем вызов функции
- removeEventListener(Event.ENTER_FRAME, Update);
- // и переводим воспроизведение куда вам надо
- gotoAndStop('compl');
- }
- }
Лучше конечно в кадре compl разместить что нибудь увесистое)).
Третий слой называем Fon и ставим туда фоновую картинку.
Теперь создаем файл ActionScript, называем его Mous пишем в него:
- package {
- import flash.events.MouseEvent;
- import flash.display.MovieClip;
- import flash.ui.Mouse;
- public class Mous extends MovieClip {
- public function Mous() {
- stage.addEventListener(MouseEvent.MOUSE_MOVE, eventListener);
- }
- public function eventListener(e:MouseEvent):void {
- e.updateAfterEvent();//присваиваем нашему курсору события мыши
- Mouse.hide();//прячем настоящий курсор
- cursor.x = mouseX;//курсор равен положению мыши по X
- cursor.y = mouseY;//курсор равен положению мыши по Y
- }
- }
- }
Сохраняем его вместе с нашим fla файлом в одной и той же папке. Нажимаем на пустое место на сцене и там где написано класс пишем Mouse. Нажимаем Ctrl + Enter и в меню выбираем правка-->имитировать загрузку а скорость ставим где то 32кб/c. И вуаля!мы можем наблюдать как наш preloader показывает сколько же осталось ждать и при 100% переходит на нужный нам кадр.
А теперь как это сделать вместе с контейнером.
Создаем еще один слой wrapper, тащим его на самую верхушку и еще один кадр, который ставим в самый перед. Опять же проверяем, все кадры в этом слое отдельные пустые ключевые кадры Наш кадр с прелоадером называем Preloading. В первый кадр слоя wrapper пишем код:
- var wrapper: Object;
- this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
- function onAddedToStage(e: Event): void {
- stage.dispatchEvent(new Event(Event.DEACTIVATE));
- stage.dispatchEvent(new Event(Event.ACTIVATE)); //переключаем события, тем самым полностью включая все события в контейнере
- wrapper = Object(this.parent.parent);
- gotoAndPlay('preloading');//при завершении загрузки контейнера переходим к прелоадеру
- wrapper.addEventListener('onApplicationAdded', function(e: Object): void {
- });
- }
все готово)Но использовать его вместе с контейнером не очень красиво, т.к. пока сам контейнер грузится, грузится и наше приложение и если приложение мало весит, preloader мы даже не заметим.
Че у нас вышло: http://lewka.at.ua/preloader.swf(прелоадер виден буквально 3секунды)
Исходник : http://lewka.at.ua/preloader.rar

