![]() |
|
||||||||||
|
|||||
|
Добрый вечер!
Обычно делаю всю загрузку через внешний прилоадер и не борюс со всякого рода глюками, но вот попал на заказчика который из приципа хочет внутренний прилоадер аля AS2, типа так проще и удобнее будет потом работать. Насколько я понимаю первое что нужно сделать - это убрать экспорт классов в первый кадр(галочка в объекте и настройки Publish - экспортировать во второй кадр). Но как тлько я это делаю и пытаюсь на втором кадре создать объект из библиотеки - у меня вываливается ошибка 1180: Call to a possibly undefined method Pic. т.е. он его перестаёт видеть, даже во втором кадре! Что я делаю не правильно? |
|
|||||
|
Посмотрите, как реализован прелоадер при создании проекта с прелоадером в FD.
Добавлено через 1 минуту 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 } } } 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); } } }
__________________
тут я |
|
|||||
|
т.е. здесь лоадер выступает просто отдельным классом или он является внешней swf'кой?
|
|
|||||
|
хм...интересно, впервые сталкиваюсь с подобной конструкцией
![]() |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 545
|
|
|
|||||
|
спасибо, КорДум, сейчас ознакомлюсь
|
|
|||||
|
Регистрация: May 2009
Сообщений: 54
|
Объясните как пользоваться этим ПРЕЛОАДЕРОМ.
У меня проект, в планах 2 кадра в 1 прелоадер во 2 все остальное. Я так понял, содаем отдельный класс PRELOADER + свой основной, но чего то я не понимаю куда втыкать пересчет % загрузки, и вообще скольки кадровый это прелоадер? я не вижу что он стопорит на втором фрейме или где то.. // TODO show loader // TODO update loader // TODO hide loader немного не понимаю назначение этих точек.. Очень прошу помощи по использованию и прикручиванию к проекту данного подхода, объясните на примере как использовать, если кто то реализовывал, поделитесь исходником, только без илишеств.. т.е прелоадер и 2 кадр с картинкой в идеале. |
|
|||||
|
Здесь кадры вообще не нужны. Все делают метатеги.
TODO - это напоминалки, что нужно сделать: показать прелоадер перерисовывать прелоадер в прогрессе загрузки скрыть прелоадер, зачистить слушатели и т.п. Цитата:
__________________
тут я |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:04. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|