Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.01.2012, 01:43
s3dworld вне форума Посмотреть профиль Отправить личное сообщение для s3dworld Найти все сообщения от s3dworld
  № 1  
Ответить с цитированием
s3dworld

Регистрация: Apr 2010
Сообщений: 170
По умолчанию Взаимодействие swf-ребёнка с swf-родителем

Всем доброй ночи!

Дано: loader.swf и game.swf. Запускается loader.swf с одного домена и в свою очередь она грузит game.swf через Loader с другого домена и добавляет его в свой контейнер методом addChild().

Нужно: необходимо чтобы из под game.swf можно было использовать переменную (либо вызвать метод) в loader.swf. Как мне это сделать?

В loader.swf базовым классом является LoaderMain, а в game.swf - game. Я пробовал решить задачу двумя способами:

СПОСОБ 1
Из под класса game в game.swf я обращаюсь к свойству parent, то есть по сути я должен буду обратиться к классу LoaderMain в loader.swf, так как именно этот класс добавляет game.swf в контейнер (хотя с другой стороны он добавляет Loader, может глубже в parent войти?!). Я хотел добраться до переменной vkd (которая в LoaderMain) и делал так в game:

Код AS3:
var vkd:VKDConnection=parent["vkd"];
Но ничего не происходило.

СПОСОБ 2
В обеих этих swf я создал LocalConnection по вот этой статье и не получилось у меня вызвать метод.

Как мне решить данную задачу?

Если подробнее, то готовится игра для социальной сети В кругу друзей и через взаимодействие JS API получается успешно работать только с тем swf, который лежит у них на сервере (а туда мы ложим loader.swf). А так как swf с игрой грузится с нашего сервера, то она не может обращаться к JS API. Следовательно нужно из неё обращаться к loader.swf. Как это сделать?

Старый 26.01.2012, 03:07
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 2  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
пусть game.swf диспатчит событие нужное, а loader.swf ловит его и делает то, что нужно
я делаю так
__________________
сайт, vk

Старый 26.01.2012, 09:56
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 3  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
напрямую, вам нужно расписать доступы доменов. для локалконекшнов тоже. см. LocalConnection.allowDomain() и Security.allowDomain()
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 26.01.2012, 11:19
s3dworld вне форума Посмотреть профиль Отправить личное сообщение для s3dworld Найти все сообщения от s3dworld
  № 4  
Ответить с цитированием
s3dworld

Регистрация: Apr 2010
Сообщений: 170
Спасибо друзья, сейчас покапаю в эту сторону. Вот только есть вопросик - при вызове из game в loader, мне для некоторых вызовов нужно будет от loader в game получить данные (как бы ответ), разве это реально с LocalConnection? Просто там ведь адрес функции в качестве функции обратного вызова хрен передашь, а точнее вряд ли заработает.

Добавлено через 10 часов 40 минут
olexandr
> пусть game.swf диспатчит событие нужное, а loader.swf ловит его и делает то, что нужно я делаю так
Решил так и сделать. Но почему-то ничего не происходит.

cleptoman
> напрямую, вам нужно расписать доступы доменов. для локалконекшнов тоже. см. LocalConnection.allowDomain() и Security.allowDomain()
И всего-то для моего примера выше и всё заработает?

Друзья, всё же как решить данную задачу?

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:24.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.