iaf
26.08.2014, 21:00
Имеется Class1 и его наследник Class2.
Оба эти класса могут быть добавлены в список отображения в любой последовательности, любом количестве и любой степени вложенности из этих двух классов.
Class2 слушает событие мыши (свое или детей) и принимает определенный статус. Поскольку Class2 не знает какие у него дети (и дети детей) - все Class2 слушают событие мыши.
Задача: добиться того, чтобы первый попавшийся родитель Class2 (или сам Class2, если он был целью события) отработал метод (получал статус). А все следующие за ним выше - проигнорировали. При чем иметь статус одновременно может только один экземпляр Class2.
- останавливать эвент нельзя.
- подгонять Class1 под нужды Class2 нельзя. Не хочется городить в предке код, который ему не нужен.
- полностью заявить о полученном статусе ближайший Class2 может только в обработчике события. Никаких setinterval, timer, enterFrame etc
У меня есть несколько "костыльных" вариантов вроде: ближайший Class2 загоняет в internal переменную Class2.gotStatus = true, потом он и все последующие смотрят своих родителей, и если среди них больше нет экземпляра Class2 - устанавливают Class2.gotStatus = false.
Но, думается, есть разумный и простой вариант, которого я пока не вижу.
Оба эти класса могут быть добавлены в список отображения в любой последовательности, любом количестве и любой степени вложенности из этих двух классов.
Class2 слушает событие мыши (свое или детей) и принимает определенный статус. Поскольку Class2 не знает какие у него дети (и дети детей) - все Class2 слушают событие мыши.
Задача: добиться того, чтобы первый попавшийся родитель Class2 (или сам Class2, если он был целью события) отработал метод (получал статус). А все следующие за ним выше - проигнорировали. При чем иметь статус одновременно может только один экземпляр Class2.
- останавливать эвент нельзя.
- подгонять Class1 под нужды Class2 нельзя. Не хочется городить в предке код, который ему не нужен.
- полностью заявить о полученном статусе ближайший Class2 может только в обработчике события. Никаких setinterval, timer, enterFrame etc
У меня есть несколько "костыльных" вариантов вроде: ближайший Class2 загоняет в internal переменную Class2.gotStatus = true, потом он и все последующие смотрят своих родителей, и если среди них больше нет экземпляра Class2 - устанавливают Class2.gotStatus = false.
Но, думается, есть разумный и простой вариант, которого я пока не вижу.