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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.10.2009, 15:33
Furinax вне форума Посмотреть профиль Отправить личное сообщение для Furinax Найти все сообщения от Furinax
  № 1  
Ответить с цитированием
Furinax
[+1 02.09.15]

Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
По умолчанию Как сделать так, чтобы событие не передавалось потомкам контейнера

Вот у меня есть контейнер. Внутри него несколько объектов. Я хочу, чтобы эти объекты не получали уведомления о возникновении события.
Решил использовать метод, stopImmediatePropagation(). Однако он всего лишь не дает выполняться зарегестрированным приемникам. А уведомление о возникновении события посылается.
Затем попробовал сделать так:
Код AS3:
private function pickup (e:MouseEvent):void {
			if (e.eventPhase == EventPhase.AT_TARGET) {
			e.target.drag();
			setChildIndex (DisplayObject(e.target), numChildren - 1);
			e.stopImmediatePropagation();
			};
		};
Но в ответ получаю:
1120: Access of undefined property EventPhase.

Поэтому прошу помочь мне найти ответ на 2 вопроса:
1) как правильно реализовать то, что я хочу сделать?
2) в связи с чем может возникать ошибка 1120?

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Код AS3:
mouseChildren = false;
Ругается видать на то что не импортировали flash.events.EventPhase.

Старый 21.10.2009, 16:30
Furinax вне форума Посмотреть профиль Отправить личное сообщение для Furinax Найти все сообщения от Furinax
  № 3  
Ответить с цитированием
Furinax
[+1 02.09.15]

Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
то, что ругается, что не импортировал уже разобрался. А вот
Код AS3:
mouseChildren = false;
не дает возможности реагировать детям на свои события мыши.

Просто у контейнера своё событие мыши, а у ребенка свое.
Когда нажимаю на контейнер, он реагирует на свое событи.
Когда нажимаю на ребенка, он реагирует и на свое и на событие контейнера. Но поскольку в ребенке не определенны методы, которые есть в контейнере, то возникает ошибка на этапе выполнения. В связи с этим я и ищу способ спастись от этой самой ошибки.

Старый 21.10.2009, 16:48
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 4  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Нипонятнааа... Т.е. вы хотите при нажатии на контейнер чтобы реагировал только контейнер, а при нажатии на ребенка - только ребенок?
Тогда так:
Код AS3:
child.addEventListener(MouseEvent.CLICK, childHandler, <b>trueb>);
Непонятна строка:
Цитата:
Когда нажимаю на ребенка, он реагирует и на свое и на событие контейнера.

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

Регистрация: Jul 2009
Сообщений: 35
Просто ему не ясно, что событие одно. Источником является тот по кому непосредственно кликнули, а не по одному из его потомков. А контейнер только его перехватывает.
Furinax по-моему ты не до конца понимаешь разницу между target и currentTarget.

Старый 21.10.2009, 17:13
Furinax вне форума Посмотреть профиль Отправить личное сообщение для Furinax Найти все сообщения от Furinax
  № 6  
Ответить с цитированием
Furinax
[+1 02.09.15]

Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
Цитата:
Сообщение от elfon Посмотреть сообщение
Просто ему не ясно, что событие одно. Источником является тот по кому непосредственно кликнули, а не по одному из его потомков. А контейнер только его перехватывает.
Furinax по-моему ты не до конца понимаешь разницу между target и currentTarget.
большое спасибо за подсказку, благодаря вам и К. Муку разобрался.

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

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

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


 


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


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