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

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

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

Регистрация: Jun 2006
Сообщений: 400
По умолчанию Блокировать передачу события stage-у.

Stage подписан на движение мышью. Хочу с верху положить клип так, что бы при движении мышью над этим клипом stage это событие не получал. \

Знаю как сделать так. Можно передать ссылку на stage. При rollOver снимать событие со stage, на rollOut снова ставить. Но если у меня поверх stage много таких объектов разнородных, то я упарюсь везде это прописывать. Может есть какой более приятный способ?

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

Регистрация: Dec 2009
Сообщений: 428
MovieClip.mouseEnabled = true
или false.. Не совсем понял задачи

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

Регистрация: Jun 2006
Сообщений: 400
leofit мне нужно что бы событие движения мыши не ушло дальше верхнего клипа. Stage ловит событие движения мышью что я ни делаю. Не хочется тащить ссылку на stage. Хочется просто заблокировать событие на этом клипе.

Старый 25.12.2009, 12:37
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
посмотри Event#stopPropagation

Старый 25.12.2009, 12:44
vitalFriend вне форума Посмотреть профиль Отправить личное сообщение для vitalFriend Найти все сообщения от vitalFriend
  № 5  
Ответить с цитированием
vitalFriend

Регистрация: Oct 2008
Сообщений: 28
сделай проще - создай мувик размером со стейдж и наложи это событие на него. И срабатывать событие будет только тогда, когда мышь будет непосредственно над видимой частью этого мувика, не закрытой другими клипами.

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

Регистрация: Jun 2006
Сообщений: 400
vitalFriend, спасибо, но такое мне не подойдет)

silin, то что нужно. Спасибо.

Старый 25.12.2009, 15:55
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Если stage подписан на capture фазу - тогда только удалять слушателей.
__________________
Hell is the possibility of sanity

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

Регистрация: Jun 2006
Сообщений: 400
wvxvw Что такое "capture фазу"? У меня все заработало с stopPropagation.

Старый 25.12.2009, 18:05
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
У всех событий которые диспатчатся дисплей объектами всегда есть 2 фазы - capture и target. Иногда у них еще может быть третья фаза - bubbling. Как правило, когда вы добавляете слушателя - вы его добавляете на bubbling / target фазу (эти две случаются после capture). К сожалению, во флешевой реализации событий и дисплей листа вы не можете из дисплей объекта диспатчить событие без capture фазы (ну, только разве что если вы замените ему dispatchEvent и подставите туда диспетчер, который не является дисплей объектом.
Но это не всегда удобно + медленно. Еще один недостаток в реализации capture фазы заключается в том, что если вы добавите слушателя не непосредственно к объекту, а к любому из его родителей, то вы все равно это событие получите... и вот это уже геморрой... А, поскольку stage - это самый верхний объект в дисплей листе, то все события на capture фазе сначала прийдут к нему, а потом уже спустятся к потомкам...

Другими словами - если у вас всю сцену перекрывает какой-нибудь дисплей объект подписаный, на, например, MouseEvent.CLICK, useCapture=false|true (не важно), и, в это же время stage подписан на MouseEvent.CLICK, useCapture=true - то stage получит событие первым, и вы не успеете запустить stopImmediatePropagation() - вот такие вот пироги с котятами...
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 25.12.2009 в 18:07.
Создать новую тему Ответ Часовой пояс GMT +4, время: 06:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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