![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Клиент попросил сделать разную реакцию объекта на мышиные события. Стал тестировать CLICK, MOUSE_DOWN, MOUSE_UP, DOUBLE_CLICK. Сначала срабатывает мышь вниз, затем мышь вверх после этого клик. Если после первого клика коротко по времени сделать второй клик то срабатывает еще раз вниз, вверх и двойной клик уже вместо обычного клика. При этом можно нажать кнопку и ждать полчаса а потом отпустить ее и сделать сразу второй клик тоже будет событие двойной клик.
У меня задача при нажатии на кнопку делать плавное увеличение параметра. Когда кнопку отпускают прекратить увеличение. При простом клике делать увеличение параметра скачками. И есть обект который надо выделять кликом и при двойном клике активировать. Пока кроме как через секундомер который будет проверять как давно кнопку на мыше нажали, когда последний клик был и т.п. не могу придумать как отличать одно событие от другого. Приходилось кому то это делать? какие приемы использовали поделитесь ![]()
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ Последний раз редактировалось SunShadow; 29.01.2009 в 12:53. Причина: собственная грамотность |
|
|||||
|
[+4 14.03.09]
|
все еще нужна помощь по этому вопросу? подход не правильный через секундомер геморрой будет. Лучше ентер_фрейм использовать.
Могу поподробнее обьяснить если надо |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Будьте любезны) я через секундомер делал)
Скорость между кадрами не постоянная величина, а вот время по getTimer() дает достаточно достоверное значение между событиями. Я воспользовался этим способом
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
[+4 14.03.09]
|
эх, я перепутал, сори. я не так понял вопрос. ага, таймер лучше подходит для определение клик это или маус_вниз.
|
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Эх а я так надеялся на красивое решение)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ Последний раз редактировалось SunShadow; 13.03.2009 в 17:57. |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Нашел решение по данной теме. Все гениальное оказалось просто.
Решаем следующую задачу. Есть карта. Когда на ней нажимают кнопку и начинают двигать мышь необходимо двигать карту. На самой карте находятся объекты которые также реагируют на клик по ним мышкой и могут выполнять действие от выделения до обновления карты, это уже зависит от объекта. Вот какое решение получилось в итоге: Заводим значение минимальноеДопустимоеСмещение - это чтобы не запускать движение карты когда мышка непроизвольно дернулась после нажатия, и логическую флагДвижения. Объекты на карте отрабатывают свои клики как положено. Далее на самой карте фиксируем два обработчика для событий MOUSE_DOWN, и CLICK причем последний в фазе Capture addEventListener(MouseEvent.MOUSE_DOWN, hnMouseDownMap); addEventListener(MouseEvent.CLICK, hnMouseClickMap,true); private function hnMouseDownMap(e:MouseEvent):void { startX = mouseX; startY = mouseY; vMoving = new _Vector(); addEventListener(MouseEvent.MOUSE_MOVE, hnMouseMoveMap); addEventListener(MouseEvent.MOUSE_UP, hnMouseUpMap); } При клике по карте в фазе Capture отлавливаем событие и если было зафиксировано движение (флагДвижения в истине) то отменяем распространение клика на потомков private function hnMouseClickMap(e:MouseEvent):void{ if (флагДвижения) { e.stopPropagation(); } } ![]()
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ Последний раз редактировалось SunShadow; 09.04.2009 в 14:06. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:31. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|