Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
CyberGenius
Сообщения: 2 Зарегистрирован: 16 сен 2012, 20:07
Сообщение
CyberGenius » 19 сен 2012, 18:22
День добрый. Столкнулся с такой проблемой: прелоадер не хочет выводить загруженный 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, то после загрузки он выводится на экран. В чем может быть проблема?
gpv123
Сообщения: 346 Зарегистрирован: 29 янв 2012, 20:57
Сообщение
gpv123 » 19 сен 2012, 19:24
Код: Выделить всё
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; } }}
Должно работать
CyberGenius
Сообщения: 2 Зарегистрирован: 16 сен 2012, 20:07
Сообщение
CyberGenius » 19 сен 2012, 19:36
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 загружается, но не выводится.
gpv123
Сообщения: 346 Зарегистрирован: 29 янв 2012, 20:57
Сообщение
gpv123 » 21 сен 2012, 16:51
CyberGenius , попробовал сам скачать и запустить:
Что это? Наверно так:
Alazaur
Разработчик
Сообщения: 1001 Зарегистрирован: 16 окт 2011, 20:25
Сообщение
Alazaur » 22 сен 2012, 13:30
Плюс в подгружаемой флешке конструктор будет выполнен до добавления ее самой на stage, то есть вот эта строка var FlashVars: Object = stage.loaderInfo.parameters as Object; выдаст ошибку. Вешайте слушатель ADDED_TO_STAGE