![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: May 2011
Адрес: Санкт-Петербург
Сообщений: 44
|
Проблема в следующем: есть фильм-папа, который запрашивает права у пользователя, добавляет приложение. Потом после выполнения всех условий, начинает загрузку дочернего фильма. В дочернем фильме идет обращение к VK.api. Например, friends.get. Функция не работает. Если вместо фильма-папы загрузить дочерний фильм, функция работает исправно.
В чем проблема? Может неправильное обращение к VK.api в дочернем фильме? Примеры кода: Фильм-папа: import vk.APIConnection; import vk.events.*; var flashVars: Object = stage.loaderInfo.parameters as Object; var VK: APIConnection = new APIConnection(flashVars); a1.visible = false; VK.addEventListener("onApplicationAdded", onApplicationAdded); function onApplicationAdded(e:CustomEvent):void { VK.callMethod("showSettingsBox", 1030); a1.visible = true; } if (flashVars.is_app_user == 1) { if (!(flashVars.api_settings & 2) || !(flashVars.api_settings & 4) || !(flashVars.api_settings & 1024)) { VK.callMethod("showSettingsBox", 1030); a1.visible = true; } else { var loader:Loader = new Loader(); var url:URLRequest = new URLRequest("http://cs10344.vkontakte.ru/u2932426/602e43ed452aa9.zip"); loader.load(url); addChild(loader); } } if (flashVars.is_app_user == 0) { VK.callMethod("showInstallBox"); } a1.addEventListener(MouseEvent.CLICK, click_); function click_(evt:MouseEvent) { VK.callMethod("showSettingsBox", 1030); } Дочерний фильм: import vk.APIConnection; var flashVars:Object=stage.loaderInfo.parameters as Object; var VK:APIConnection=new APIConnection(flashVars); VK.api("friends.get", {uid:flashVars.viewer_id}, Friends, FriendsErr); function Friends(response:Object) { function getLength(o:Object):uint { var len:uint = 0; for (var item:* in o) { if (item != "mx_internal_uid") { len++; } } return len; } var func =getLength(response); var text_:TextField=new TextField(); text_.text = "У вас "+func " друзей"; addChild(text_); } function FriendsErr(response:Object) { var text_:TextField=new TextField(); text_.width = 300; text_.text = "Ошибочка вышла. Попробуйте еще разок!"; addChild(text_); } |
|
|||||
|
Регистрация: May 2010
Сообщений: 543
|
в дочернем - эта конструкция скорее всего дает null.
Дождитесь добавления дочернего клипа на сцену (слушайте ADDED_TO_STAGE), а потому обращайтесь к stage
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) |
|
|||||
|
Регистрация: May 2011
Адрес: Санкт-Петербург
Сообщений: 44
|
Цитата:
Вот так? |
|
|||||
|
Banned
Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Сeргей, flashVars - это не DisplayObject. Добавить их в дисплей лист невозможно.
Вообще, вот такая конструкция: - далеко не лучший стиль написания кодов. Лучше добавить к объекту contentLoaderInfo загрузчика слушатель Event.COMPLETE и уже по завершению загрузки добавлять контент на сцену После этого объект точно сможет обращаться к свойствам stage |
|
|||||
|
Регистрация: May 2010
Сообщений: 543
|
Цитата:
Цитата:
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) |
|
|||||
|
Регистрация: May 2011
Адрес: Санкт-Петербург
Сообщений: 44
|
Большое спасибо всем ответившим, буду вникать.
|
|
|||||
|
Banned
Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
|
|
|||||
|
Регистрация: May 2011
Адрес: Санкт-Петербург
Сообщений: 44
|
Попробовал вот так:
var loader:Loader = new Loader(); var url:URLRequest = new URLRequest("http://cs10344.vkontakte.ru/u2932426/72d6f7f11437ed.zip"); loader.load(url); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loading); function loading(e:Event) { stage.addChild(e.target.content as DisplayObject); } Пишу не в классе, а во fla файле. В чем ошибка? |
|
|||||
|
Banned
Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Нужно поменять эти строчки местами:
Сначала добавляем слушатель, а потом уже грузим. Но проблема скорее всего не в этом, а в том, что флешке не известен формат загружаемого файла. Что это вообще? Я его скачал, но открыть не могу |
|
|||||
|
Регистрация: May 2011
Адрес: Санкт-Петербург
Сообщений: 44
|
Спасибо, сейчас попробую.
Если вы об этом http://cs10344.vkontakte.ru/u2932426/72d6f7f11437ed.zip - то все очень просто. В настройках есть пункт "Дополнительные swf-файлы". Как я понимаю, туда нужно загружать файлы в формате swf, которые будут в дальнейшем использоваться в приложении. Сайт как-то меняет расширение, и в итоге получается формат zip. Пока не хочу использовать сторонний сервер для хранения swf, так как не уверен, пойдет у меня дело со флешем или нет. Добавлено через 40 минут Поменял местами, все равно не работает. По ходу дело в формате. var loader:Loader = new Loader(); var url:URLRequest = new URLRequest("http://cs10344.vkontakte.ru/u2932426/72d6f7f11437ed.zip"); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loading); loader.load(url); function loading(e:Event) { stage.addChild(e.target.content as DisplayObject); } |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|