![]() |
|
||||||||||
|
|||||
|
Создаю pure AS3 проект. На выходе флэшка всего 450 кБ. Сначала делал вообще без прелоадера. Но при открытии в браузере флэшка появляется только на 4-5 секунде. Непонятно от чего это.
Решил добавить прелоадер. В флэшке из 450 кБ - 3/4 это ресурсы: графика (jpg, png, swf) и звуки (mp3). Читаю здесь как правильно добавлять прелоадер. Теперь у меня в корне проекта появляются три класса: Main, Preloader и App. Почти все как в статье по ссылке (вторая часть где без Flash IDE) только добавил SWF которая отображает процесс загрузки цифрами. Вот сам класс Preloader.as package { import flash.display.BlendMode; import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; import flash.utils.getDefinitionByName; import flash.events.ProgressEvent; [SWF(width="500", height="700", frameRate="30")] public class Preloader extends MovieClip { [Embed(source = 'lib/preloader.swf', symbol = 'progressbar')] private var progressBarClass:Class [Embed(source = 'lib/preloader.swf', symbol = 'percent')] private var percentDisplayClass:Class private var preloadGraphic:Sprite = new Sprite(); private var progressBar:Sprite = new progressBarClass(); private var percentDisplay:Sprite = new percentDisplayClass(); private var percent:TextField; [Embed(source="images/afisha_4.png")] public var Afisha:Class; public function Preloader() { addEventListener(Event.ENTER_FRAME, checkFrame); // show loader progressBar.scaleX = 0; preloadGraphic.addChild(progressBar); preloadGraphic.addChild(percentDisplay); preloadGraphic.y = stage.stageHeight / 2; percentDisplay.blendMode = BlendMode.INVERT; percentDisplay.x = stage.stageWidth / 2; percentDisplay.y = -4; percent = percentDisplay.getChildByName("percentDisplay") as TextField; addChild(preloadGraphic); loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress); } protected function progress(event:ProgressEvent):void { trace(event.bytesLoaded); } private function checkFrame(e:Event):void { trace(e); if (currentFrame == totalFrames) { removeEventListener(Event.ENTER_FRAME, checkFrame); startup(); } else { var bytesLoaded:Number = this.loaderInfo.bytesLoaded; var bytesTotal:Number = this.loaderInfo.bytesTotal; percent.text = Math.ceil((100 * (bytesLoaded / bytesTotal))) + "%"; progressBar.scaleX = (bytesLoaded / bytesTotal); } } private function startup():void { removeChild(preloadGraphic); stop(); var mainClass:Class = getDefinitionByName("Main") as Class; addChild(new mainClass() as DisplayObject); } } } Теперь при запуске прелоадер с 100% появляется на доли секунды и пропадает. Специально заэмбедил в проект png размером 27 Мб, но все равно грузится мгновенно. При этом первый трейс выдает 11447351, а второй вообще ничего (извиняюсь, не досмотрел - выводит [Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]). Подскажите, как все правильно вставить прелоадер, чтобы он нормально отображал загрузку моих ресурсов? Правильно ли что все ресурсы нужно добавлять так как я сделал с png или можно создать отдельный файл, а в прелоадере просто импортнуть: import myRes.Resourses;? Последний раз редактировалось Astraport; 21.11.2011 в 16:12. |
![]() |
Часовой пояс GMT +4, время: 03:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|