2012-01-10 1 views
0

Я разрабатываю приложение для веб-игр с холстом HTML5, который должен реагировать на события «щелчка» (в общем смысле).Ручка onTouchDown в мобильном браузере и onMouseDown на рабочем столе/ноутбуке?

На мобильной платформе (или сенсорной), что означает реагировать на onTouchDown, на платформе для настольных компьютеров и ноутбуков (с помощью мыши или пэда), что означает реагирование на onMouseDown.

Проблема в том, что если я обрабатываю оба события, то иногда один и тот же «щелчок» приведет к тому, что оба события будут запущены, поэтому я получаю двойную сигнализацию.

Что было бы лучшим способом справиться с этим?

В настоящее время, при первом событии касания я получаю, я выключаю события мыши, но это может быть немного тяжело, если платформа поддерживает оба касания: & щелчки мыши (fi Android-планшет с приложенной клавиатурой/пэдом/мышью)

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

Я посмотрел на обнаружение пользователя-агента, но это кажется довольно хрупким (многие пользовательские агенты там), и не решает случаи, когда на платформе есть и сенсорная панель &.

ответ

1

Возможно сочетание Вашего предложения:

Измерение задержки между нажатием & нажмите, чтобы игнорировать щелчок после касания не работает слишком хорошо, поскольку есть обстоятельства, при которых пользователь может коснуться/кликать в высокая частоты, поэтому слишком длинная задержка приводит к упала двойные краны/клики, и слишком короткая задержка позволяет через случайную двойную сигнализацию ускользает через

и детекцию х, у координаты крана будет уменьшить количество ложных срабатываний , Поэтому, если оба события (нажмите & щелчок), происходящие в последовательности, получившие одинаковые координаты, они обрабатываются одинаково.

Или, может быть, пользователь может переключиться (через какой-то экран настроек), если он хочет использовать мышь или сенсорный экран для своего устройства, если оба поддерживаются. Отобразите предупреждающее сообщение, например, you're on a touch device so we enabled touch events, if you're using a mouse please see options или что-то в этом роде.

Большинство пользователей было бы очень довольны авто-выбором, и все, кто был бы несчастлив, могут его изменить.

Смежные вопросы