某些Android设备在未移动手指时会跳过onTouchEvent

时间:2014-02-11 17:24:06

标签: android events touch

我正在尝试制作一款Android游戏,玩家可以通过触摸屏幕上的任意位置移动角色,握住触摸并向任何方向拖动手指。 所以我用2点来存储触摸的坐标。一个用于触摸事件开始的坐标,一个用于手指现在位置。 使用我的华硕变压器垫(Android 4.2然后现在4.3)这很好用。但是在2个智能手机(一些LG配备Android 4.0,我的Nexus 5配备4.4)上,当手指没有移动一帧时,触摸事件就会停止。 似乎没有调用onTouchEvent(MotionEvent事件)。

这是onTouchEvent函数:

@Override
public boolean onTouchEvent(MotionEvent event) {
    synchronized (getHolder()) {

            if (getTouchStart() == null)
                setTouchStart(new CPoint(event.getX(), event.getY()));

            setTouch(new CPoint(event.getX(), event.getY()));


        return true;
    }
}

这就是绘图时所说的:

if (getTouch() != null)
{
    [unimportant drawing stuff]
}
else
    setTouchStart(null);

setTouch(null);

(CPoint是我的Point类,用于存储触摸的坐标)

因此,在其他两个设备上,只有当玩家自上次渲染帧后移动手指时才会调用onTouchEvent函数。此外,触摸事件已完成,并且在移动时会创建新事件。

有没有办法避免这种行为? onTouchEvent应该适用于每个设备

//抱歉我的英文不好

0 个答案:

没有答案