![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: May 2009
Сообщений: 122
|
Здравсвуйте.
Подскажите пожалуйста. Есть следующий код в классе Main.as package { import flash.display.*; import flash.net.URLRequest; import flash.events.*; import flash.text.*; public class Main extends Sprite { private var loader:Loader; private var progressOutput:TextField; public function Main() { createLoader(); createProgressIndicator(); load( new URLRequest("Module.swf") ); } private function createLoader():void { loader = new Loader(); loader.contentLoaderInfo.addEventListener( ProgressEvent.PROGRESS, progressListener ); loader.contentLoaderInfo.addEventListener( Event.COMPLETE, completeListener ); loader.contentLoaderInfo.addEventListener( Event.INIT, initListener ); loader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR, ioErrorListener ); } private function createProgressIndicator():void { progressOutput = new TextField(); progressOutput.autoSize = TextFieldAutoSize.LEFT; progressOutput.border = true; progressOutput.background = true; progressOutput.selectable = false; progressOutput.text = "LOADING ..."; } private function load( urlRequest:URLRequest ):void { loader.load(urlRequest); if( !contains(progressOutput) ) { addChild(progressOutput) } } private function progressListener(e:ProgressEvent):void { progressOutput.text = "LOADING: " + Math.floor(e.bytesLoaded / 1024) + "/" + Math.floor(e.bytesTotal / 1024) + "KB"; } private function initListener(e:Event):void { MovieClip(loader.content).play(); addChild(loader.content); } private function completeListener(e:Event):void { removeChild(progressOutput); } private function ioErrorListener(e:IOErrorEvent):void { progressOutput.text = "LOAD ERROR"; } } // end class } // end package Подскажите пожалуйста в чем может быть проблема ? Еще флеш выдает следующую ошибку: TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at _964_fla::MainTimeline/frame1() |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 545
|
|
|
|||||
|
Регистрация: May 2009
Сообщений: 122
|
Цитата:
|
|
|||||
|
Регистрация: May 2009
Сообщений: 122
|
Цитата:
![]() |
|
|||||
|
Вы добавляете ролик по init, это соб-тие наступает когда первый кадр доступен для проигрывания. Complete - событие когда загрузка полностью завершена. Чувствуете разницу? Поэтому у вас ролик уже проигрывается, а complete ещё нет и прогрессбар не убирается. Убирайте прогрессбар по событию init.
|
|
|||||
|
Надо сделать stop MovieClip-у в initListener
А в completeListener надо сделать play Цитата:
ПС: Стоп в ините не забудьте сделать |
|
|||||
|
Регистрация: May 2009
Сообщений: 122
|
Цитата:
private function initListener(e:Event):void { addChild(loader.content); MovieClip(loader.contentLoaderInfo.content).stop(); } private function completeListener(e:Event):void { MovieClip(loader.contentLoaderInfo.content).play(); addChild(loader.contentLoaderInfo.content); removeChild(progressOutput); } |
|
|||||
|
Я бы так сделал:
private function initListener(e:Event):void { MovieClip(loader.content).stop(); } private function completeListener(e:Event):void { addChild(loader.content); MovieClip(loader.content).play(); removeChild(progressOutput); } Кстати я бы очень хотел услышать обоснование от Инквизитора,, зачем менять loader.content на loader.contentLoaderInfo.content? |
|
|||||
|
Регистрация: May 2009
Сообщений: 122
|
Цитата:
Добавлено через 42 минуты У меня еще вопрос Я пытаюсь добавить к тексту размер, шрифт и т.д. Вот код package { import flash.display.*; import flash.net.URLRequest; import flash.events.*; import flash.text.*; import flash.text.TextFormat; import flash.text.Font; public class Main extends Sprite { private var loader:Loader; private var progressOutput:TextField; private var progressOutputFormat:TextFormat; private var load_mc:MovieClip; public function Main() { createLoader(); createProgressIndicator(); load( new URLRequest("Module.swf") ); } private function createLoader():void { loader = new Loader(); loader.contentLoaderInfo.addEventListener( ProgressEvent.PROGRESS, progressListener ); loader.contentLoaderInfo.addEventListener( Event.COMPLETE, completeListener ); loader.contentLoaderInfo.addEventListener( Event.INIT, initListener ); loader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR, ioErrorListener ); } private function createProgressIndicator():void { trace(progressOutputFormat) progressOutputFormat.size = 18; progressOutputFormat.color = 0x00334D; progressOutputFormat.font = "Arial"; progressOutput = new TextField(); progressOutput.text = "LOADING ..."; progressOutput.defaultTextFormat = progressOutputFormat; load_mc = new Load_mc(); load_mc.x = stage.stageWidth / 2; load_mc.y = stage.stageHeight / 2; addChild(load_mc); } private function load( urlRequest:URLRequest ):void { loader.load(urlRequest); if( !contains(progressOutput) ) { addChild(progressOutput) } } private function progressListener(e:ProgressEvent):void { progressOutput.text = "LOADING: " + Math.floor(e.bytesLoaded / 1024) + "/" + Math.floor(e.bytesTotal / 1024) + "KB"; } private function initListener(e:Event):void { MovieClip(loader.content).stop(); } private function completeListener(e:Event):void { addChild(loader.content); MovieClip(loader.content).play(); removeChild(progressOutput); removeChild(load_mc); } private function ioErrorListener(e:IOErrorEvent):void { progressOutput.text = "LOAD ERROR"; } } // end class } // end package флеш ругается TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at Main/createProgressIndicator() at Main() Что не так не могу понять |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:03. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| loader as3 , PROGRESS , ProgressBar , ProgressEvent |
|
|