Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MOUSE_DOWN и CLICK на один объект (http://www.flasher.ru/forum/showthread.php?t=178287)

Rembrant 18.04.2012 16:22

MOUSE_DOWN и CLICK на один объект
 
Столкнулся с казалось бы простой задачей. Есть мувиклип, который можно перетаскивать мышью (зажать кнопку, передвинуть курсор, отпустить). Но если по нему делать простой клик, он должен проигрывать анимацию. Проблема в том, что программа сразу реагирует на MOUSE_DOWN и вступает в фазу передвижения, и затем не реагирует на CLICK.
Ловить MOUSE_DOWN + MOUSE_UP через промежуток времени и обрабатывать как клик - как-то криво и ненадёжно. Прошу помочь, есть ли другие варианты?

Zebestov 18.04.2012 16:39

Подписаться на оба события сразу.
Добавить флаг вступления в фазу передвижения. Если он true — не реагировать на клик.
Вступать в фазу передвижения не по нажатию кнопки мыши, а по какому-то признаку перемещения с нажатой кнопкой.

Rembrant 18.04.2012 16:57

Проблема в том, что на MOUSE_DOWN он должен сразу менять вид, ещё до начала движения. Иначе недалёкие юзеры могут вообще не понять, что его вообще можно двигать.

Zebestov 18.04.2012 17:03

Цитата:

Сообщение от Rembrant (Сообщение 1075695)
...на MOUSE_DOWN он должен сразу менять вид, ещё до начала движения...

Вид пускай меняет, но клик не блокирует. Однако, если это эстетически плохое решение, придется отказаться от изменения вида до начала явного смещения.
Реакция на смещения объекта, по которому еще и кликать приходится, должна иметь искусственный порог. Никто не любит не срабатывающий клик из-за едва заметного движения мышки в момент клика, что часто происходит у неопытного пользователя.

P.S.
И особенно актуально это на тачскрине.

Sweet07 18.04.2012 17:05

поставь задержку на startDrag, равную пол-секунде. При завершении таймера - startDrag,

добавь слушатель MOUSE_UP, который бы прерывал таймер, не давая ему завершиться.

MikroAcse 18.04.2012 17:24

Не вижу разницы между CLICK и MOUSE_UP.

maxkar 18.04.2012 19:02

> Не вижу разницы между CLICK и MOUSE_UP.
При MOUSE_UP соответствующий ему MOUSE_DOWN может быть совершенно на другом объекте. Для клика - всегда на том же.

MikroAcse 18.04.2012 19:07

Цитата:

При MOUSE_UP соответствующий ему MOUSE_DOWN может быть совершенно на другом объекте. Для клика - всегда на том же.
Спасибо.


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

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