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

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!

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

Сообщение lewka151 » 20 мар 2010, 22:09

сейчас мы сделаем обычный preloader в виде прямоугольника, длина которого пропорциональна равна числу загруженных байтов, и поля, которое отображает загруженные проценты, и заменим курсор мыши на свой на AS 3.
создаем документ ActionScript3.0, и создам 2 кадра и 3слоя. Кадр первого слоя растягиваем на все кадры, и рисуем на нем на курсор. Нажимаем F8, преобразовываем его в фрагмент ролика(MovieClip) и ставим точку регистрации в левом верхнем углу. Называем его cursor, он должен находится на всех кадрах. Называем этот слой Cursor и больше не трогаем.

Второй слой называем Prelouder. Здесь будет проводится основная работа. Проверяем, каждый из 2 кадров это отдельный пустой ключевой кадр. Рисуем прямоугольник, жмем F8. Теперь определяемся, если мы хотим что бы полоса увеличивалась сразу в обе стороны, ставим точку регистрации в центре, а если хотим чтобы она увеличивалась из левого угла к правому, ставим точку регистрации в левом верхнем углу. Называем этот прямоугольник preLouder и размещаем поудобнее на сцене.Под ним делаем динамическое поле под названием tf. Второй кадр называем compl. В первом кадре слоя Prelouder пишем код:

  1. import flash.events.*;//импортируем нужные нам элементы
  2. this.stop();//останавливаем воспроизведение
  3.  
  4. stage.showDefaultContextMenu = false;//прячем стандартные пункты контекстного меню
  5.  
  6. addEventListener(Event.ENTER_FRAME, Update);
  7. // Описание функции Update
  8. function Update(e : Event):void {
  9.             var bytesLoaded:Number = stage.loaderInfo.bytesLoaded;
  10.             // перемнная, хранящая число загруженых байт нашего приложения
  11.             var bytesTotal:Number = stage.loaderInfo.bytesTotal;
  12.             // переменная, хранящая обьём приложения в байтах
  13.             var s:String = "";
  14.             // обьявление пустой строчной перемнной, в которой будут храниться проценты загрузки
  15.             var percent:Number = 0;
  16.             // обьявление пустой числовой переменной
  17.             if (bytesTotal>0){
  18.             // ждем когда приложение узнает свой настоящий размер
  19.                 percent = Math.floor(bytesLoaded/bytesTotal*100);
  20.                 //Считаем сколько процентов уже загрузилось и округляем до целых
  21.                 s = percent+"%"
  22.                 // Прибавляем к числу знак %
  23.                 preLouder.width = percent*4;
  24.                 //длинна прямоугольника пропорциональна равна числу загружнных байтов
  25.                 //длинна прямоугольника в 100% = 400, подставляете как вам удобно
  26.                 tf.text = s;
  27.                 //показываем в поле tf проценты загрузки
  28.             }
  29.    
  30. // проверяем, полностью ли загрузилось приожение
  31.     if (bytesLoaded == bytesTotal) {
  32. // если полностью, то удаляем вызов функции
  33.         removeEventListener(Event.ENTER_FRAME, Update);
  34. // и переводим воспроизведение куда вам надо
  35.         gotoAndStop('compl');
  36.     }
  37.            
  38. }
  39.  


Лучше конечно в кадре compl разместить что нибудь увесистое)).
Третий слой называем Fon и ставим туда фоновую картинку.

Теперь создаем файл ActionScript, называем его Mous пишем в него:

  1. package {
  2.     import flash.events.MouseEvent;
  3.     import flash.display.MovieClip;
  4.     import flash.ui.Mouse;
  5.     public class Mous extends MovieClip {
  6.         public function Mous() {
  7.             stage.addEventListener(MouseEvent.MOUSE_MOVE, eventListener);
  8.         }
  9.         public function eventListener(e:MouseEvent):void {
  10.             e.updateAfterEvent();//присваиваем нашему курсору события мыши
  11.             Mouse.hide();//прячем настоящий курсор
  12.             cursor.x = mouseX;//курсор равен положению мыши по X
  13.             cursor.y = mouseY;//курсор равен положению мыши по Y
  14.         }
  15.     }
  16. }


Сохраняем его вместе с нашим fla файлом в одной и той же папке. Нажимаем на пустое место на сцене и там где написано класс пишем Mouse. Нажимаем Ctrl + Enter и в меню выбираем правка-->имитировать загрузку а скорость ставим где то 32кб/c. И вуаля!мы можем наблюдать как наш preloader показывает сколько же осталось ждать и при 100% переходит на нужный нам кадр.



А теперь как это сделать вместе с контейнером.


Создаем еще один слой wrapper, тащим его на самую верхушку и еще один кадр, который ставим в самый перед. Опять же проверяем, все кадры в этом слое отдельные пустые ключевые кадры Наш кадр с прелоадером называем Preloading. В первый кадр слоя wrapper пишем код:

  1. var wrapper: Object;
  2. this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
  3. function onAddedToStage(e: Event): void {
  4.    stage.dispatchEvent(new Event(Event.DEACTIVATE));
  5.    stage.dispatchEvent(new Event(Event.ACTIVATE)); //переключаем события, тем самым полностью включая все события в контейнере
  6.    wrapper = Object(this.parent.parent);
  7.    gotoAndPlay('preloading');//при завершении загрузки контейнера переходим к прелоадеру
  8.    wrapper.addEventListener('onApplicationAdded', function(e: Object): void {
  9.    });
  10. }
  11.  


все готово)Но использовать его вместе с контейнером не очень красиво, т.к. пока сам контейнер грузится, грузится и наше приложение и если приложение мало весит, preloader мы даже не заметим.
Че у нас вышло: http://lewka.at.ua/preloader.swf(прелоадер виден буквально 3секунды)
Исходник : http://lewka.at.ua/preloader.rar
 Атака шариков

За это сообщение автора lewka151 поблагодарил:
soldermakc
Аватара пользователя
lewka151

 
Сообщения: 54
Зарегистрирован: 16 фев 2010, 22:01
Откуда: http://vkontakte.ru/id20138940
Благодарил (а): 6 раз.
Поблагодарили: 6 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 


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

Сообщение VITAL » 21 мар 2010, 10:32

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

Я думаю он всем нам очень пригодится!!!
VITAL

 
Сообщения: 34
Зарегистрирован: 29 дек 2009, 14:32
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

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

Сообщение revizor » 21 мар 2010, 19:50

во спасибо ) и курсор красивый )
Аватара пользователя
revizor
FL Team
FL Team
 
Сообщения: 967
Зарегистрирован: 18 ноя 2009, 21:22
Благодарил (а): 5 раз.
Поблагодарили: 17 раз.

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

Сообщение VIP » 23 мар 2010, 21:39

Супер спасибо побольше бы уроков в контейнере
VIP

 
Сообщения: 251
Зарегистрирован: 24 ноя 2009, 19:10
Благодарил (а): 23 раз.
Поблагодарили: 1 раз.

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

Сообщение lewka151 » 25 мар 2010, 15:40

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

думаю всем пора переходить на него))
 Атака шариков
Аватара пользователя
lewka151

 
Сообщения: 54
Зарегистрирован: 16 фев 2010, 22:01
Откуда: http://vkontakte.ru/id20138940
Благодарил (а): 6 раз.
Поблагодарили: 6 раз.

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

Сообщение m_s » 20 авг 2010, 11:21

Спасибо за урок!
Как сделать...
Допустим размер окна флэшки 400х400пх, нужно чтобы курсор заменялся в координатах 5 - 395 оси X и Y, а за предедами этих координат становился обычным.
m_s

 
Сообщения: 1
Зарегистрирован: 20 авг 2010, 11:05
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение D_Koff » 29 окт 2010, 13:54

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

  1.  
  2. package {  
  3.    import flash.display.Sprite;  
  4.    import flash.ui.Mouse;  
  5.    import flash.events.MouseEvent;  
  6.    import flash.events.Event;
  7.    
  8.    public class Main extends Sprite  
  9. {
  10.    
  11.     var lightBall:LightBall;
  12.    
  13.     public function Main():void  
  14. {  
  15.    Mouse.hide();  
  16.    stage.addEventListener(MouseEvent.MOUSE_MOVE, startTrailer);  
  17. }
  18.  
  19. private function startTrailer(e:MouseEvent):void  
  20. {
  21.  
  22. lightBall = new LightBall();
  23.  
  24. lightBall.x = mouseX + Math.random() * lightBall.width;  
  25. lightBall.y = mouseY - Math.random() * lightBall.height;
  26.  
  27. addChild(lightBall);  
  28.      
  29. lightBall.addEventListener(Event.ENTER_FRAME, animate);
  30. }
  31. private function animate(e:Event):void  
  32. {
  33.    
  34. e.target.alpha -= 0.05;
  35.  
  36. if (e.target.alpha <= 0)  
  37. {  
  38.    e.target.removeEventListener(Event.ENTER_FRAME, animate);  
  39.    removeChild(e.target as Sprite);  
  40. }  
  41.  
  42. e.target.scaleX -= 0.1;  
  43. e.target.scaleY -= 0.1;
  44. e.target.y += 3;  
  45. }
  46. }
  47. }


где LightBall - имя класса мовиклипа с картинкой (в моём случае небольшим кружочком) из которой и получается хвост.
но присоединив этот скрипт у меня появилось куча ошибок. помогите, пожалуйста, решить проблему.
D_Koff

 
Сообщения: 9
Зарегистрирован: 27 окт 2010, 22:16
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

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

Сообщение D_Koff » 29 окт 2010, 15:20

ошибки:

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, 22:16
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

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

Сообщение D_Koff » 30 окт 2010, 16:51

спасибо, разобрался уже.
D_Koff

 
Сообщения: 9
Зарегистрирован: 27 окт 2010, 22:16
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.


Вернуться в Уроки по использованию ВКонтакте API



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0