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

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

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

Регистрация: Sep 2008
Сообщений: 6
Question События в подгружаемом мувике - обработка в главном

Добрый день,
только начал знакомиться с AC поэтому попрашу сильно не ругать
Есть главный мувик.
Есть подгружаемый мувик background.
В подгружаемом мувике находится несколько объектов со своиме instance name.
Мне необходимо в главном мувике выполнять действие при наведении мыши на объект в подгружаемом (background)
не очень понимаю как подгружаемый мувик должен "сообщать" главному что событие произошло...
Подскажите пожалуйста...

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

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Подпишите главный мувик на нужное Вам событие и он его получит.

Старый 05.09.2008, 18:23
charlyod вне форума Посмотреть профиль Отправить личное сообщение для charlyod Найти все сообщения от charlyod
  № 3  
Ответить с цитированием
charlyod

Регистрация: Sep 2008
Сообщений: 6
не очень понимаю как на него подписаться....
Если в этом же мувике this.addEventListener(MouseEvent.CLICK, navigate);
а как подписаться на события элемента из подгружаемого мувика?

Старый 05.09.2008, 18:44
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 4  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Событие идет от stage до объекта (если событие bubbles то и обратно) и проходит в том числе через родителя.

Старый 05.09.2008, 18:57
charlyod вне форума Посмотреть профиль Отправить личное сообщение для charlyod Найти все сообщения от charlyod
  № 5  
Ответить с цитированием
charlyod

Регистрация: Sep 2008
Сообщений: 6
я только начал AS учить... как это событие поймать, не понимаю...
можете поподробнее объяснить ... или может пример есть где?

Старый 05.09.2008, 20:18
Antisly вне форума Посмотреть профиль Отправить личное сообщение для Antisly Найти все сообщения от Antisly
  № 6  
Ответить с цитированием
Antisly
 
Аватар для Antisly

Регистрация: May 2008
Сообщений: 61
Я обычно делаю так:

Код:
public class SomeClass extends MovieClip
{
	public var eventHandler:Function;
		
	public function SomeClass()
	{
		...
		eventHandler= null;
		...
		addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
		...
	}
	private function onMouseOver(event:MouseEvent):void
	{
		if (eventHandler != null) {
			eventHandler(event);
		}
	}
}
И уже там, где создаешь экземпляр этого класса, просто пишешь свой обработчик (yourEventHandler) и присваиваешь его:

Код:
var someClass:SomeClass = new SomeClass();
someClass.eventHandler = yourEventHandler;

public function yourEventHandler(event:MouseEvent):void
{
	trace(event.target.name);
}
Может и есть более элегантные способы....


Последний раз редактировалось Antisly; 05.09.2008 в 20:21.
Старый 05.09.2008, 23:42
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Antisly, лучше бы вы это не показывали и сами не использовали.

Автору нужны всплывающие события.

Старый 05.09.2008, 23:54
Antisly вне форума Посмотреть профиль Отправить личное сообщение для Antisly Найти все сообщения от Antisly
  № 8  
Ответить с цитированием
Antisly
 
Аватар для Antisly

Регистрация: May 2008
Сообщений: 61
Цитата:
Сообщение от __etc Посмотреть сообщение
Antisly, лучше бы вы это не показывали и сами не использовали.

Автору нужны всплывающие события.
Автору нужно решение, и я его предложил. И если у вас есть то, что нужнно автору наверняка, то почему бы не поделиться?

Старый 06.09.2008, 00:52
vvk80 вне форума Посмотреть профиль Отправить личное сообщение для vvk80 Найти все сообщения от vvk80
  № 9  
Ответить с цитированием
vvk80
[+3 09.12.07]

Регистрация: Oct 2006
Сообщений: 114
Код:
public var eventHandler:Function;
это как это??? Не встречал в документации Adobe такаого написания...

а что так нельзя??
Код:
public var preferencesLoaded:Event;
preferencesLoaded = new Event("preferencesLoaded", true)
this.dispatchEvent(preferencesLoaded)
ну и затем подписываемся на это соыбтие в другом классе
Код:
this.addeventListener("preferencesLoaded", onPrefsLoaded);
private function onPrefsLoaded(evt:Event):void
{
//обработчик
}

Старый 06.09.2008, 01:47
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 10  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Цитата:
> это как это??? Не встречал в документации Adobe такаого написания...
Это вполне обычный синтаксис описания переменной. Для чего он используется в приведенном примере - другой вопрос.
Цитата:
> а что так нельзя?
Можно, только если автору нужно MOUSE_OVER, можно не диспатчить свое событие, а в родителе подписаться на MOUSE_OVER (MOUSE_OVER - всплывающее в отличии от ROLL_OVER) и в обработчике проверять target. Если пришло от нужного child, выполнять необходимые действия.
Код:
...
this.addChild(someChild);
this.addEventListener(MouseEvent.MOUSE_OVER, overHandler);
...
private function overHandler(e:MouseEvent):void
{
    switch (e.target)
    {
        case someChild:     //действия
                                  break;
        default:                //действия
    }
}
...


Последний раз редактировалось mre; 06.09.2008 в 02:17.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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