Страница 1 из 1

Почему прелоадер не выводит загруженный swf?

Добавлено: 19 сен 2012, 18:22
CyberGenius
День добрый. Столкнулся с такой проблемой: прелоадер не хочет выводить загруженный swf.
Вот код лоадера:

Код: Выделить всё

package {    import flash.display.Loader;    import flash.display.LoaderInfo;    import flash.display.MovieClip;    import flash.display.Sprite;    import flash.events.Event;    import flash.events.ProgressEvent;    import flash.net.URLRequest;    import flash.text.TextField;    import flash.text.TextFieldAutoSize;     public class Main extends MovieClip     {        private var loadStatus: TextField = new TextField();        private var loader: Loader = new Loader();                public function Main():void         {               loader.load(new URLRequest("http://cs6102.vk.com/u122246923/2e6dfe23bf74ce.zip"));            loader.contentLoaderInfo.addEventListener(Event.OPEN, displayPreloader);            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, OnComplete);            loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, OnProgress);        }        private function displayPreloader(evt: Event): void        {            loadStatus.autoSize = TextFieldAutoSize.LEFT;            addChild(loadStatus);        }        private function OnProgress(evt: ProgressEvent): void        {            loadStatus.text = evt.bytesLoaded + " из " + evt.bytesTotal + " " + ((evt.bytesLoaded/evt.bytesTotal)* 100 ) + "%";        }        private function OnComplete(evt: Event): void        {            removeChild(loadStatus);            addChild(loader);        }    }}
Вот код загружаемого swf:

Код: Выделить всё

package {    import flash.display.MovieClip;    import flash.display.Sprite;    import flash.events.Event;    import flash.text.TextField;    import vk.APIConnection;     public class Main extends MovieClip     {        public function Main():void         {            var FlashVars: Object = stage.loaderInfo.parameters as Object;            var VK: APIConnection = new APIConnection(FlashVars);                        VK.api("putVariable" , { key:1300, user_id:FlashVars.viewer_id, value:"З1" } );                        var txt: TextField = new TextField;            txt.text = "Какой то текст";            addChild(tTx);        }    }}
Прелоадер имеет функцию, которая выводит процесс загрузки - и прелоадер показывает, что swf загружен. Если заменить загружаемый swf на другой - не использующий API VK, то после загрузки он выводится на экран. В чем может быть проблема?

Re: Почему прелоадер не выводит загруженный swf?

Добавлено: 19 сен 2012, 19:24
gpv123

Код: Выделить всё

package{    import flash.display.*;    import flash.events.*;    import flash.net.*;    import flash.text.*;    import flash.system.*;     public class Main extends Sprite    {        private var loadStatus: TextField = new TextField();        private var loader: Loader = new Loader();               public function Main():void        {            Security.allowDomain('*');            loader.load(new URLRequest("http://cs6102.vk.com/u122246923/2e6dfe23bf74ce.zip"));            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, OnComplete);            loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, OnProgress);            addChild(loader);                        loadStatus.autoSize = TextFieldAutoSize.LEFT;            addChild(loadStatus);        }        private function OnProgress(evt: ProgressEvent): void        {            loadStatus.text = evt.bytesLoaded + " из " + evt.bytesTotal + " " + ((evt.bytesLoaded / evt.bytesTotal) * 100) + "%";        }        private function OnComplete(evt: Event): void        {            loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, OnComplete);            loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, OnProgress);            removeChild(loadStatus);            loadStatus = null;        }    }}
Должно работать

Re: Почему прелоадер не выводит загруженный swf?

Добавлено: 19 сен 2012, 19:36
CyberGenius
gpv123 писал(а):

Код: Выделить всё

package{    import flash.display.*;    import flash.events.*;    import flash.net.*;    import flash.text.*;    import flash.system.*;     public class Main extends Sprite    {        private var loadStatus: TextField = new TextField();        private var loader: Loader = new Loader();               public function Main():void        {            Security.allowDomain('*');            loader.load(new URLRequest("http://cs6102.vk.com/u122246923/2e6dfe23bf74ce.zip"));            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, OnComplete);            loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, OnProgress);            addChild(loader);                        loadStatus.autoSize = TextFieldAutoSize.LEFT;            addChild(loadStatus);        }        private function OnProgress(evt: ProgressEvent): void        {            loadStatus.text = evt.bytesLoaded + " из " + evt.bytesTotal + " " + ((evt.bytesLoaded / evt.bytesTotal) * 100) + "%";        }        private function OnComplete(evt: Event): void        {            loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, OnComplete);            loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, OnProgress);            removeChild(loadStatus);            loadStatus = null;        }    }}
Должно работать
Нет, не работает. SWF загружается, но не выводится.

Re: Почему прелоадер не выводит загруженный swf?

Добавлено: 21 сен 2012, 16:51
gpv123
CyberGenius, попробовал сам скачать и запустить:

Изображение

Код: Выделить всё

addChild(tTx);
Что это? Наверно так:

Код: Выделить всё

addChild(txt);

Re: Почему прелоадер не выводит загруженный swf?

Добавлено: 22 сен 2012, 13:30
Alazaur
Плюс в подгружаемой флешке конструктор будет выполнен до добавления ее самой на stage, то есть вот эта строка var FlashVars: Object = stage.loaderInfo.parameters as Object; выдаст ошибку. Вешайте слушатель ADDED_TO_STAGE