|
|
|||||
Регистрация: May 2008
Сообщений: 102
|
Конфликт CLICK и MOUSE_DOWN
Проблема известная, но нормального решения в инете не смог найти.
Создаем листнеры: this.addEventListener(MouseEvent.MOUSE_DOWN , handleStartDrag ); this.addEventListener(MouseEvent.MOUSE_UP , handleStopDrag ); this.addEventListener(MouseEvent.CLICK , layerClick ); в handleStartDrag начинается драг поля на котором "бегают" анимированные объекты. По логике нам нужно, чтобы при драге останавливалась анимация у этих объектов. в handleStopDrag анимация стартует снова. Соответственно когда просто кликаешь на это поле - срабатывает и layerClick и handleStartDrag. Если кликать очень быстро все анимашки как бы дергаются. Стопятся и стартуют все время. Как тут можно выкрутиться? Как разделить CLICK и MOUSE_DOWN? Последний раз редактировалось dimarik; 03.11.2011 в 23:01. Причина: 95 постов и не научились теги расставлять. |
|
|||||
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
По таймеру проверять, сколько прошло времени между MouseDown и MouseUp - если меньше определенного времени (подбор) -то это клик, если больше - то зажали и держат.
|
|
|||||
Регистрация: May 2008
Сообщений: 102
|
Сейчас попробую, но есть сомнения.
|
|
|||||
Цитата:
да, кстати, MOUSE_UP у вас скорее всего неправильно будет обрабатываться (MOUSE_UP'у не обязательно предшествует MOUSE_DOWN по этому объекту) Последний раз редактировалось fljot; 03.11.2011 в 20:02. |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
А MOUSE_UP уже отменили?
click - Это савокупность MOUSE_DOWN и MOUSE_UP не совсем понимаю зачем их делить |
|
|||||
Может лучше DOUBLE_CLICK.
Кстати, а при DOUBLE_CLICK, MOUSE_DOWN и MOUSE_UP срабатывают? Или
__________________
Книги и желание лучшие учителя. Последний раз редактировалось Vektor; 03.11.2011 в 22:50. |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
Для того, чтобы он работал более менее нормально, надо на всех детях контейнера включать Иначе, если двойной щелчок происходит на каком-то ребенке контейнера, событие не доставится. Цитата:
|
|
|||||
this.addEventListener(MouseEvent.MOUSE_DOWN , handleStartDrag ); this.addEventListener(MouseEvent.MOUSE_UP , handleStopDrag ); this.addEventListener(MouseEvent.CLICK , layerClick ); this.addEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove); var isDrag:Boolean = false; private function handleMouseMove(event:MouseEvent):void { isDrag = event.buttonDown; } private function handleStartDrag(event:MouseEvent):void { if (isDrag) { // ... // someObject.x = event.stageX; // ... } } Добавлено через 4 минуты Цитата:
|
|
|||||
Цитата:
Блин что тут вообще обсуждать, топик выеденого яйца не стоит |
Часовой пояс GMT +4, время: 10:25. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|