простой preloader и замена курсора с контейнером

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!
Ответить
Аватара пользователя
lewka151
Сообщения: 54
Зарегистрирован: 16 фев 2010, 21:01

простой preloader и замена курсора с контейнером

Сообщение lewka151 »

сейчас мы сделаем обычный preloader в виде прямоугольника, длина которого пропорциональна равна числу загруженных байтов, и поля, которое отображает загруженные проценты, и заменим курсор мыши на свой на AS 3.
создаем документ 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);// Описание функции Updatefunction 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
VITAL
Сообщения: 34
Зарегистрирован: 29 дек 2009, 13:32

Re: простой preloader и замена курсора с контейнером

Сообщение VITAL »

Большое спасибо за урок !!!

Я думаю он всем нам очень пригодится!!!
Аватара пользователя
revizor
FL Team
FL Team
Сообщения: 1034
Зарегистрирован: 18 ноя 2009, 20:22

Re: простой preloader и замена курсора с контейнером

Сообщение revizor »

во спасибо ) и курсор красивый )
VIP
Сообщения: 252
Зарегистрирован: 24 ноя 2009, 18:10

Re: простой preloader и замена курсора с контейнером

Сообщение VIP »

Супер спасибо побольше бы уроков в контейнере
Аватара пользователя
lewka151
Сообщения: 54
Зарегистрирован: 16 фев 2010, 21:01

Re: простой preloader и замена курсора с контейнером

Сообщение lewka151 »

готовые уроки здесь легко переделывать под контейнер))
просто подставить wrapper.---.---.)

думаю всем пора переходить на него))
m_s
Сообщения: 1
Зарегистрирован: 20 авг 2010, 10:05

Re: простой preloader и замена курсора с контейнером

Сообщение m_s »

Спасибо за урок!
Как сделать...
Допустим размер окна флэшки 400х400пх, нужно чтобы курсор заменялся в координатах 5 - 395 оси X и Y, а за предедами этих координат становился обычным.
D_Koff
Сообщения: 9
Зарегистрирован: 27 окт 2010, 21:16

Re: простой preloader и замена курсора с контейнером

Сообщение D_Koff »

За урок спасибо, но вместо другого курсора я решил сделать "мышиный хвост".
Написал такой замечательный код:

Код: Выделить всё

 package {     import flash.display.Sprite;     import flash.ui.Mouse;     import flash.events.MouseEvent;     import flash.events.Event;      public class Main extends Sprite  {        var lightBall:LightBall;         public function Main():void  {     Mouse.hide();     stage.addEventListener(MouseEvent.MOUSE_MOVE, startTrailer);  } private function startTrailer(e:MouseEvent):void  {  lightBall = new LightBall(); lightBall.x = mouseX + Math.random() * lightBall.width;  lightBall.y = mouseY - Math.random() * lightBall.height; addChild(lightBall);        lightBall.addEventListener(Event.ENTER_FRAME, animate);}private function animate(e:Event):void  {    e.target.alpha -= 0.05;  if (e.target.alpha <= 0)  {     e.target.removeEventListener(Event.ENTER_FRAME, animate);     removeChild(e.target as Sprite);  }   e.target.scaleX -= 0.1;  e.target.scaleY -= 0.1; e.target.y += 3;  }}}
где LightBall - имя класса мовиклипа с картинкой (в моём случае небольшим кружочком) из которой и получается хвост.
но присоединив этот скрипт у меня появилось куча ошибок. помогите, пожалуйста, решить проблему.
D_Koff
Сообщения: 9
Зарегистрирован: 27 окт 2010, 21:16

Re: простой preloader и замена курсора с контейнером

Сообщение D_Koff »

ошибки:

Main.as, Line 2, 1046: Type was not found or was not a compile-time constant: TextField
Main.as, Line 2, 1046: Type was not found or was not a compile-time constant: MovieClip
Сцена 1, слой "preloader", Line 24, 1080: Call to a possibly undefined method gotoAndStop.
Main.as, Line 1, 1080: Call to a possibly undefined method addFrameScript.
Сцена 1, слой "preloader", Line 24, 1080: Call to a possibly undefined method stop throught a reference with static type Main.
D_Koff
Сообщения: 9
Зарегистрирован: 27 окт 2010, 21:16

Re: простой preloader и замена курсора с контейнером

Сообщение D_Koff »

спасибо, разобрался уже.
Ответить