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

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

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
По умолчанию Как заставить срабатывать событие MOUSE_OVER у всех MC под курсором мышки?

Есть необходимость сделать следующий пирог:

- внизу лежит большой и плоский мувиклип, на котором набросаны эффекты, связанные с отслеживанием событий MOUSE_OVER/MOUSE_OUT курсора мыши, например, зажигаются/гаснут некоторые сектора сцены.
- вверху над этим клипом висят динамически порожденные объекты, у которых свои листенеры событий MOUSE_OVER/MOUSE_OUT

Никаких родственных отношений ни у кого нет (и мне нужно обойтись без них по разным причинам).

Сейчас когда мышка двигается по сцене, отрабатывают события клипа на бэкграунде, но при заходе на объект, тот перехватывает ее события MOUSE_OVER/MOUSE_OUT и они вниз уже не проходят.

Как победить?

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Сделать свое всплывающее событие (bubbles = true) и отсылать его при MOUSE_OVER

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
на вскидку не получилось.

сделал так:

объектам, которые висят спереди, в обработку события MOUSE_OVER добавил генерацию события "mouseOverObject", а всем объектам, которые сидят внутри мувика на бэкграунде повесил листенер на событие "mouseOverObject". Но событие туда не прошло.

Может это из-за того, что мувик на бэкграунде подкачивается и запускается во время исполнения приложения?

Старый 24.01.2010, 17:43
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от mikhailk Посмотреть сообщение
объектам, которые висят спереди, в обработку события MOUSE_OVER добавил генерацию события "mouseOverObject", а всем объектам, которые сидят внутри мувика на бэкграунде повесил листенер на событие "mouseOverObject". Но событие туда не прошло.
Вы событие всплывающим отправляете?

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Код AS3:
dispatchEvent(new Event("mouseOverObject",true));

Старый 24.01.2010, 19:17
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

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

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Через getObjectsUnderPoint - довольно занятно.
а есть у нас способ проверить, существует ли у объекта такой-то метод?
Я бы применил этот метод ко всем объектам под курсором мыша, у которых метод существует и все.

можно, конечно, через try, но не люблю плодить ошибки запланированно.

Старый 24.01.2010, 19:56
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Повесить на них интерфейс какой-нибудь. Нужно учесть, что getObjectsUnderPoint будет выдавать вам ссылки на шейпы внутри ваших объектов, а не на сами объекты. Поэтому нужно проходить по parent-ам и выяснять, на что наведена мышь.

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
да уж...
что-то мне кажется, должен быть какой-нибудь простой способ реализации всего этого. А нет ли у нас возможности запускать событие не вообще воздух, а в конкретный контейнер?

Или не так.
У нас есть контейнер, его имя мы знаем.
Нулевым чилдом кладем алармер, когда нужно разослать события объектам внутри контейнера, дергаем этого алармера, он диспатчит событие... Остальные объекты внутри контейнера это событие услышат?

Старый 25.01.2010, 02:24
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
сделайте общий контейнер для клипа с эффектами и для объектов, в нем ловите MOUSE_OVER объектов и дергайте клип с эффектами. В принципе клип с эффектами может и не быть ребенком контейнера, достаточно иметь на него ссылку.

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

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

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


 


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


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