我正在尝试制作一款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应该适用于每个设备
//抱歉我的英文不好