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

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

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
По умолчанию Отменить обработку click после mouse_up если был drag

Как отменить (не обрабатывать) событие mouse.click если в обработке mouse_down - mouse_up было перетаскивание (drag/drop) объекта? Т.к. click отрабатывается после mouse_up простым флагом не обойтись. Приходит в голову только решение "в лоб" - в mouse_down сохранять координаты и в click смотреть, не изменились ли они. Но может есть решение лучше?
__________________
interplanety

Старый 09.05.2014, 03:28
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 2  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Можно так:
0) Создаем флаг was_moving = false. Вешаем прослушку mouse_down, mouse_up, mouse_click.
1) В обработчике mouse_down устанавливаем was_moving = false. Вешаем прослушку mouse_move.
2) В обработчике mouse_move устанавливаем was_moving = true (потому что раз обработчик вызван, то движение точно произошло и, заметим, ответственность за отслеживанием наличия движения ложится на плеер). После установки флага, можно здесь же удалить обработчик mouse_move.
3) В обработчике mouse_click смотрим установлен ли флаг was_moving:
3.1) Установлен: значит движение было (и mouse_move уже самоудалился), выходим из функции.
3.2) Не установлен: значит движения не было (mouse_move все еще висит), удаляем mouse_move, выполняем остаток функции.

Преимущество схемы: оставляем плееру решать было движение или нет.
Недостатки схемы: довольно запутана, постоянно вешать/снимать слушатель mouse_move может оказаться накладным. А может и нет.

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

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

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


 


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


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