Adobe AIR:触摸屏无法正确触发鼠标按下事件

5
我已经设计了一个AS3游戏亭应用程序,我正在使用它在Windows 7上的Sony Vaio L PC(类似于HP的Touchsmarts)。该应用程序不需要任何多点触摸手势(仅单点触摸和拖动),因此我正在使用鼠标事件。一切都很好(包括鼠标点击和移动事件),除了屏幕上的单个触摸(没有移动)不会触发鼠标按下。只有在手指稍微移动后才会触发。在我的桌面上,我看到小的Windows 7光标立即跳到手指放置的位置,这意味着这个问题不是硬件或Windows的问题,而是Flash应用程序如何从操作系统接收“翻译”的触摸到鼠标事件的内部方式。例如,在Windows纸牌游戏中,简单地触摸屏幕会立即突出显示所触摸的卡片。在我的应用程序中,只有当我触摸并稍微移动手指时,按钮才会更改为按下状态(点击事件-按下和松开-被正确触发)。难道MOUSE_DOWN事件不应该像新的TouchEvent类中的TOUCH_BEGIN一样触发吗?有什么想法吗?
3个回答

3

我也遇到了同样的问题。

Multitouch.inputMode 属性设置为 MultitouchInputMode.TOUCH_POINT (默认值是 MultitouchInputMode.GESTURE) 可以使得当用户触摸屏幕时会派发 MOUSE_DOWN 事件,而不是在他们触摸并移动或触摸和释放时派发该事件。


1
这解决了我在Windows 8平板电脑上遇到的问题。谢谢! - Marcel Ray
我也遇到了同样的问题?我应该在哪里更改这个选项?我找不到它。 - tebdilikiyafet

0

刚买了一个新的触摸屏,又遇到了问题。

解决方法是在代码中任何位置写入以下内容:Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT 来设置 Multitouch.inputMode

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

请注意,在Flash编辑器中通过Ctrl+Enter测试时不起作用(至少在CC 2015中)。因此,例如,您需要在Flash Player中单独打开.SWF文件。
编辑:但是在调试模式下它可以工作!(Ctrl+Shift+Enter

0

如果光标在触摸时移动,那么我认为操作系统只会将其注册为鼠标移动(MOUSE_MOVE),而不是鼠标按下(MOUSE_DOWN)。因为这是一个触摸屏,你可以将鼠标移动(MOUSE_MOVE)视为点击,因为用户可能并没有真正拖动手指来创建一个真实的鼠标移动事件。

嗯,如果他们实际上用手指拖动来做某些事情,那么你可以假设如果鼠标移动(MOUSE_MOVE)突然将光标放在一个按钮上(没有之前的鼠标移动即拖动),那就是鼠标按下(MOUSE_DOWN)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接