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

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

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

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
По умолчанию Хорошая реализация CLICK + MOUSE_DOWN

К сожаления не нашел аналога работы виндосовского клика + mouseDown , Нашел только реализации типа
Добавляем таймер на проверку клика, если время между mouseDown и Up меньше скольки то там миллисекунд, то обрабатываем клик.

Но по идее клик - это когда сработал маусдаун, далее(возможно) произошло незначительное смещение курсора(человеческий фактор), прошло сколько угодно времени (может даже несколько секунд, все кликают по разному) потом сработал маусАп, - далее обрабатываем клик. Но как по правильному будет словить это вот незначительное смещение курсора, и правильно обработать mouseDown + mouseMove + mouseUp и click

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Что-то не понял проблемы. Зачем вообще ловить какое-то смещение? mouseUp отработает независимо от того было какое-то смещение или нет

Старый 16.12.2013, 12:00
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 3  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
как у меня сейчас:
есть переменная ключ - isClicked, по mouseDown ставлю ее true,

в хэндлере mouseMove - ставлю ее false

в хэндлере mouseUp -
Код AS3:
if (isClicked){
    onClick();
    return;
}
// дальше если нет клика делаем что-то по mouseUp
проблема такая - иногда , после маусдаун курсор немного сдвигается , когда жмешь на кнопку мыши, соответственно выполняется хэндлер mouseMove, и переменная ставится в false, и соответственно функция onClick() не выполняется(то есть клика не происходит ), что напрягает, нужно ее как-то обойти.

Старый 16.12.2013, 12:18
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
аналога работы виндосовского клика + mouseDown
А что он делает?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 16.12.2013, 12:39
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 5  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
Цитата:
Сообщение от iNils Посмотреть сообщение
А что он делает?
ну я писал что находил варианты как реализовать такой механизм, но там просто ставился таймер между маусдаун и маусап, если он маленький - значит это клик, а в виндоусе между маусдауном и апом может пройти хоть 10 минут(мало ли на мой объект будет кликать дама бальзаковского возраста), и он обработает его как клик.



По поводу изменения координат, мой объект - это шкала(по маусмуву она должна перемещаться, но также на ней можно кликать, чтобы выбрать значение), если допустим я ее перемещу влево а потом верну на те же координаты, тогда получится что будет обрабатываться клик, но драг то был.

А, ну хотя можно хранить максимальное смещение, и его проверять..

Старый 17.12.2013, 00:37
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
Сообщение от Isfet Посмотреть сообщение
ну я писал что находил варианты как реализовать такой механизм, но там просто ставился таймер между маусдаун и маусап, если он маленький - значит это клик, а в виндоусе между маусдауном и апом может пройти хоть 10 минут(мало ли на мой объект будет кликать дама бальзаковского возраста), и он обработает его как клик.
Речь идет о Double Click?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 16.12.2013, 12:19
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 7  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Тогда можно сохранять mouseX и mouseY при нажатии в обработчике mouseDown, а в mouseMove проверять смещение курсора относительно этих сохраненных данных.

Старый 16.12.2013, 14:55
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 8  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
https://github.com/fljot/Gestouch

quickstart:
Код AS3:
var tap:TapGesture = new TapGesture(yourBar);
tap.addEventListener(GestureEvent.GESTURE_RECOGNIZED, onTap);
//tap.slop = 0;// например, так можно сдвигать только на 0 пикселей. по-умолчанию там подходящее для тачкринов значение
//tap.maxTapDuration = 2000;//например, так после 2 секунд "клика" уже не будет. по-умолчанию 1500мс
 
var pan:TapGesture = new PanGesture(yourBar);
pan.addEventListener(GestureEvent.GESTURE_BEGAN, onPan);
pan.addEventListener(GestureEvent.GESTURE_CHANGED, onPan);
 
... onPan(event:GestureEvent):void
{
    pan.offsetX/Y
}
при перемещении тап(клик) автоматически отменяется (если явно не указано обратное).

Там сейчас скорее всего есть одна беда с памятью, так что для хорошего удаления лучше использовать dispose() на жестах.

Старый 17.12.2013, 20:42
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от fljot Посмотреть сообщение
Паш, я тут подумал, что создание отдельного инстанса типа гестуре для всех заинтересованных объектов слишком расточительно, особенно для мобилки. Может где-нибудь откуда-то присылать в дисплейобжект сразу событие соответствующего типа жеста?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 18.12.2013, 16:08
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 10  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Цитата:
Сообщение от dimarik Посмотреть сообщение
Паш, я тут подумал, что создание отдельного инстанса типа гестуре для всех заинтересованных объектов слишком расточительно, особенно для мобилки. Может где-нибудь откуда-то присылать в дисплейобжект сразу событие соответствующего типа жеста?
Дабы не разводить здесь оффтоп, я в "блоге" ответил.

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

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

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


 


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


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