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

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

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

Регистрация: Mar 2014
Сообщений: 4
По умолчанию Единичное реагирование на событие мыши.

Имеется Class1 и его наследник Class2.

Оба эти класса могут быть добавлены в список отображения в любой последовательности, любом количестве и любой степени вложенности из этих двух классов.

Class2 слушает событие мыши (свое или детей) и принимает определенный статус. Поскольку Class2 не знает какие у него дети (и дети детей) - все Class2 слушают событие мыши.

Задача: добиться того, чтобы первый попавшийся родитель Class2 (или сам Class2, если он был целью события) отработал метод (получал статус). А все следующие за ним выше - проигнорировали. При чем иметь статус одновременно может только один экземпляр Class2.

- останавливать эвент нельзя.
- подгонять Class1 под нужды Class2 нельзя. Не хочется городить в предке код, который ему не нужен.
- полностью заявить о полученном статусе ближайший Class2 может только в обработчике события. Никаких setinterval, timer, enterFrame etc

У меня есть несколько "костыльных" вариантов вроде: ближайший Class2 загоняет в internal переменную Class2.gotStatus = true, потом он и все последующие смотрят своих родителей, и если среди них больше нет экземпляра Class2 - устанавливают Class2.gotStatus = false.

Но, думается, есть разумный и простой вариант, которого я пока не вижу.

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

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

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


 


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


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