![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2015
Сообщений: 63
|
Приветствую! Перечитал кучу тем по части создания такого прелоадера, но нужной информации не нашел (да, читал и темы с этого форума, в которые вы можете перенаправить). История такова, что осваивая FD пришел к решению подгрузить вот такую строчку перед классом прелоадера: [Frame(factoryClass="src.Preloader")] и мой драгоценный класс Main наконец то заработает. Тестирую на сервере через сеть, закидывая скомпилированное туда, но прелоадер не появляется. Трейсы из него не видны.
src.Main package src { import flash.display.MovieClip; import flash.events.Event; import flash.display.Sprite; import flash.display.DisplayObject; [SWF(width="600", height="500", backgroundColor="#1a1a1a")] //кажется строку эту не видит [Frame(factoryClass="src.Preloader")]// эту строчку игнорирует public class Main extends Sprite { public function Main() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); }//fun Main public function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); здесь начинается загрузка вторичных классов addChild(...); } package src { 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; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.display.LoaderInfo; public class Preloader extends MovieClip { private var preloader_text:TextField; private var swf_w:int=600; private var swf_h:int=500; public function Preloader() { trace("Oh mein Gott!");//чуда не произошло 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); // Прелоадер - визуальная часть preloader_text=new TextField(); preloader_text.text="Load 0 % "; preloader_text.textColor=0xA0A0A0; preloader_text.selectable=false; preloader_text.autoSize=TextFieldAutoSize.CENTER; preloader_text.x=swf_w/2-preloader_text.width/2; preloader_text.y=swf_h/2; addChild(preloader_text); } private function ioError(e:IOErrorEvent):void { trace(e.text); } private function progress(e:ProgressEvent):void { // Update loader preloader_text.text="Load "+(Math.round((loaderInfo.bytesLoaded*100)/loaderInfo.bytesTotal))+" %"; } 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); // Спрятать прелоадер preloader_text.visible=false; startup(); } private function startup():void { var mainClass:Class = getDefinitionByName("Main") as Class;// пробовал с "src.Main" но не пошло тоже if (parent == stage) stage.addChildAt(new mainClass() as DisplayObject, 0); else addChildAt(new mainClass() as DisplayObject, 0); } } } |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
1. Надеюсь Вы компилили, указав прелоадер как Document Class? ))) Да и проект то выбран "AS3 with Preloader"?
2. Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2015
Сообщений: 63
|
1. И поэтому не получалось?) [Frame(factoryClass="src.Preloader")] у меня в классе Main, его и указывал класом документа. Насчет "AS3 with Preloader" вы оказались правы, перенес проект туда и разобравшись со структурой(дополнительно сгенерил swc) удалось проект запустить как надо. Ура!
Спасибо за наводку. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|