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

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

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

Регистрация: Aug 2007
Сообщений: 168
Question Как из загружаемой флешки отправить в событии ссылку на себя?

Здравствуйте. Необходимо из загружаемой swf отправлять некое событие в котором передавать доступную для основной флешки (которая загружает первую) ссылку на саму же себя (загружаемую флешку). Как это правильно сделать? Пробовал через:
Код AS3:
this.dispatchEvent("evt", true) //в загружаемой, и
 
stage.addEventListener("evt", onEvt) //в основной
но до основной событие почему-то не "доплывает" (хотя отравляю и слушаю когда stage уже сущесвует (в Event.ADDED_TO_STAGE)),

потом пробовал создать собсвенное событие и отправляеть в нем ссылку как дополнительный параметр:
Код AS3:
package vpartner {
	import flash.display.MovieClip;
	import flash.events.Event;
 
	public class PartnerAnimationEvent extends Event{
 
		static public const ANIMATION_START:String = "animation_start";
		static public const ANIMATION_END:String = "animation_end";
 
		private var $animTarget:MovieClip;//ссылка
 
		public function PartnerAnimationEvent(type:String, animTarget:MovieClip, bubbles:Boolean = false) {
			super(type, bubbles);
			$animTarget = animTarget;
		}
 
		public function get animTarget():MovieClip { return $animTarget; }
 
	}
 
}
Отправляю его уже для stage (поскольку в этом случае событие доходит до внешней флешки, но что target, что currentTarget ссылкаються на Stage (сслыки нету))

Код AS3:
stage.dispatchEvent(new PartnerAnimationEvent(PartnerAnimationEvent.ANIMATION_END, this, true));//отправляю (из внутренней флешки)
 
stage.addEventListener(PartnerAnimationEvent.ANIMATION_END, onAnimEnd);//ловлю (во внешней)
В этом случае событие отлавливаеться но возникает совсем непонятная ошибка:
Код:
TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать vpartner::PartnerAnimationEvent@ef345f1 в vpartner.PartnerAnimationEvent.
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at flash.display::Stage/dispatchEvent()
	at vpartner.demo::AnimationBase/__whenEnterFrame()
Мучаюсь уже два дня, с этими попытками, подскажите пожалуйста как мне все-таки правильно передать ссылку?

Старый 12.06.2010, 19:03
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 2  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
чтобы событие доплывало, нужно, чтобы загруженная флешка была не просто загружена, а добавлена на stage основной флешки.

если вам этого не надо, так подписывайтесь на событие не на уровне stage, а на том уровне, в детях которого есть эта флешка. Например на уровне loader-а, которым вы его грузите

возможно еще там разрешить надо взаимный доступ через границы изолированной среды (точно уже не помню), тогда и события проходить будут. В основной и загружаемой флешкепишем Security.allowDomain("*"); и только после этого диспатичм эвенты.

Добавлено через 1 минуту
да, еслстественно, если вы подписались на событие у stage основной, то обьект который делает this.dispathcEvent() должен быть на экране, иначе событие не дойдет...

Старый 12.06.2010, 21:36
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 3  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
там еще sharedEvents есть
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 13.06.2010, 03:43
AlliAS вне форума Посмотреть профиль Отправить личное сообщение для AlliAS Найти все сообщения от AlliAS
  № 4  
Ответить с цитированием
AlliAS
 
Аватар для AlliAS

Регистрация: Aug 2007
Сообщений: 168
Да вроде и с доступом (гружу с new LoaderContext(true, ApplicationDomain.currentDomain, SecurityDomain.currentDomain)), и с наличием на stage все в порядке (отправляю из обработчика Event.ADDED_TO_STAGE), но все-равно до stage доплывают, только если диспатчить события с него-же кстати, а что такое SharedEvents ?

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

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

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


 


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


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