Adobe AIR: сенсорный экран неправильно запускает событие нажатия мыши

Я разработал приложение для игрового киоска в as3. Я использую его на ПК Sony vaio l (например, сенсорных экранах hp) в Windows 7, приложению не требуются мультитач-жесты (только одно касание и перетаскивание), поэтому я использую его. события мыши

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

вне приложения, на моем рабочем столе, я вижу, что маленький курсор Windows 7 сразу же перемещается туда, где находится палец, что означает, что эта проблема не связана с аппаратным обеспечением или Windows, а скорее с тем, как внутренне флэш-приложение получает "переведенное" касание. события мыши из ОС.

например, в игре "Пасьянс Windows" простым прикосновением к экрану сразу выделяется карта, к которой вы прикоснулись. в моем приложении кнопка будет переведена в состояние "вниз", только если я коснусь ее, а также слегка проведу пальцем (события нажатия - вниз и вверх - запускаются нормально)

разве событие MOUSE_DOWN не должно вызывать то же самое, что и TOUCH_BEGIN в новом классе touchevent?

есть идеи?

3 ответа

Я столкнулся с той же проблемой.

Настройка Multitouch.inputMode собственность на MultitouchInputMode.TOUCH_POINT (значение по умолчанию MultitouchInputMode.GESTURE) кажется, чтобы сделать MOUSE_DOWN отправка события, когда пользователь касается экрана, а не когда он касается и перемещается или касается и отпускает.

Если курсор перемещается, когда они касаются, то я предполагаю, что ОС просто регистрирует это как MOUSE_MOVE, а не MOUSE_DOWN. Поскольку это сенсорный экран, вы можете просто считать MOUSE_MOVE щелчком, поскольку пользователь, вероятно, на самом деле не тянет пальцем вокруг создания реального события MOUSE_MOVE.

Что ж, если они на самом деле тянут свой палец за вещами, то вы можете предположить, что MOUSE_MOVE внезапно помещает курсор на кнопку (без предшествующего MOUSE_MOVE, т.е. перетаскивания), это MOUSE_DOWN.

Просто купил новый тачскрин и снова столкнулся с проблемой.

Таким образом, решение состоит в том, чтобы установить Multitouch.inputMode в MultitouchInputMode.TOUCH_POINT написав в любом месте вашего кода:

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

Обратите внимание, что он не работает при тестировании Ctrl+Enter во Flash Editor (по крайней мере, в CC 2015). Так, например, вам нужно открыть .SWF отдельно во Flash Player.

РЕДАКТИРОВАТЬ: Но это работает в режиме отладки! (Ctrl+Shift+Enter)

Другие вопросы по тегам