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
)