|
|
|||||
Регистрация: Nov 2014
Сообщений: 52
|
Окно загрузки
И снова всем привет. Я заметил что во многих клипах используется некое окно загрузки с прогресс баром, и когда загрузка завершена, активируется кнопка Play для воспроизведения клипа.
Хотелось бы в первую очередь узнать как оно работает и как реализовано? Ведь если swf не до конца скачался, каким образом он выполняет скрипт и даже что то рисует? Неплохо бы найти какой нибудь туториал, желательно с исходником на эту тему. Спасибо. |
|
|||||
Уроков в сети на эту тему (preloader as3) очень много. Например - http://flash-animated.com/sozdanie-p...-rolika-na-as3
|
|
|||||
Регистрация: Apr 2014
Сообщений: 215
|
Цитата:
Последний раз редактировалось delphic; 18.12.2014 в 13:36. |
|
|||||
Это внутренний прелоадер. Как только загружен первый кадр флешки, она показывается и срабатывает код этого кадра или класса. Затем флешка просто сама себя проверяет - насколько она загрузилась.
Если у флешки всего один кадр, то такого внутреннего прелоадера ничего не выйдет. |
|
|||||
Регистрация: Apr 2014
Сообщений: 215
|
Цитата:
|
|
|||||
Цитата:
Preloader package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.ProgressEvent; import flash.utils.getDefinitionByName; public class Preloader extends MovieClip { public function Preloader() { if (stage) { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; } addEventListener(Event.ENTER_FRAME, checkFrame); loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress); loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError); // TODO show loader } private function ioError(e:IOErrorEvent):void { trace(e.text); } private function progress(e:ProgressEvent):void { // TODO update loader } private function checkFrame(e:Event):void { if (currentFrame == totalFrames) { stop(); loadingFinished(); } } private function loadingFinished():void { removeEventListener(Event.ENTER_FRAME, checkFrame); loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress); loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError); // TODO hide loader startup(); } private function startup():void { var mainClass:Class = getDefinitionByName("Main") as Class; addChild(new mainClass() as DisplayObject); } } } package { import flash.display.Sprite; import flash.events.Event; [Frame(factoryClass="Preloader")] // <------------- public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point } } } Да, вы правильно поняли голику по пунктам 1-5. Цитата:
|
|
|||||
Регистрация: Apr 2014
Сообщений: 215
|
ну да,про fd я слышал о такой штуке,но я делаю в cs6, спасибо за ответы, уже какое то понимание пришло, уж как то трудно для меня было это прелодер
у меня документ клас примерно такой package nazvanie { import flash.display.*; import flash.ui.*; import flash.events.*; public class DocumentClass extends MovieClip { private var mainMenu:MainMenu; private var game:Game; public function DocumentClass() { mainMenu = new MainMenu(); mainMenu.x = 0; mainMenu.y = 0; this.addChild(mainMenu); mainMenu.addEventListener("PLAY",playListener); } private function playListener(e:Event):void { game = new Game(); game.x = 0; game.y = 0; stage.addChild(game); } } ММ, тогда получается надо из документ класс убирать главное меню игры в отдельный класс и прикрутить его к мувиклипу что на втором кадре будет и там же слушатель запуска игры, а что же тогда в документ классе писать,что он будет пустой тогда? Последний раз редактировалось delphic; 18.12.2014 в 15:07. |
|
|||||
Регистрация: Apr 2014
Сообщений: 215
|
Цитата:
вот тогда будет походу нормально... ну это вроде как точно отработать должно. ох уж этот прелодер в cs))) что самое интересное именно реализации в cs версиях хотя бы маленького примера, схемы работы загрузчика, откуда и куда, не нашел,просто коды в основном есть, а принципа что то ну не нашел... |
Часовой пояс GMT +4, время: 07:30. |
|
« Предыдущая тема | Следующая тема » |
|
|