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

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

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

Регистрация: Jun 2009
Сообщений: 56
По умолчанию Мышинные события загружаемого класса

Добрый день, опишу свою проблему:

Действующие лица:
1. SWF файл "А", лежащий в домене "domainA.com";
2. SWF файл "Б", лежащий в другом домене "domainB.com";

Ситуация:

Файл "А" слушает все дошедшие до него события "click" и оповещает о их возникновении:
Код AS3:
addEventListener(MouseEvent.CLICK, clickHandler);
}
 
private function clickHandler(e:MouseEvent):void {
  trace("Main.clickHandler", e.target);
}
Файл "А" грузит в себя файл "Б" (разницы в какой домен безопасности грузить для моей проблемы нет):
Код AS3:
  var urlRequest:URLRequest = new URLRequest("http://domainB.com/data/Ball.swf?" + (new Date()).time);
 
  var applicationDomain:ApplicationDomain = ApplicationDomain.currentDomain;
  var securityDomain:SecurityDomain = null; //SecurityDomain.currentDomain;
  var loaderContext:LoaderContext = new LoaderContext(true, applicationDomain, securityDomain);
  loader = new Loader;
  loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_compliteHandler);
  loader.load(urlRequest, loaderContext);
Файл "А" доверяет загружаемому файлу "Б":
Код AS3:
private function loader_compliteHandler(e:Event):void {
  var loaderInfo:LoaderInfo = e.target as LoaderInfo;
  Security.allowDomain(loaderInfo.url);
это подтверждается проверкой свойства Loader.contentLoaderInfo.parentAllowsChild;

Файл "Б" доверяет загружающему его файлу "А":
Код AS3:
Security.allowDomain(root.loaderInfo.loaderURL);
это подтверждается проверкой свойства Loader.contentLoaderInfo.childAllowsParent;

Далее из загруженного файла "Б" достаётся класс, создаётся экземпляр этого класса и помещается на сцену:

Код AS3:
  var visualClass:Class = loaderInfo.applicationDomain.getDefinition("Ball") as Class;
  var instanceOfVisualClass:MovieClip = new visualClass;
 
  addChild(instanceOfVisualClass);
}
Проблема: экземпляр класса не знает что по нему кликнули, и, соответственно, не генерирует событие "click".

Можно добавить на сцену весь Loader, тогда, он посылает событие. Но это не подойдёт в моём случае, потому-что необходимо мышкой работать с дочерними элементами класса. Да и экземпляров класса может быть несколько с разными внутренними данными, потому его (класс) хочется загрузить один раз и далее уже просто при необходимости создавать экземпляры.

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

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

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


 


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


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