[英]In onTouchEvent, ACTION_UP doesn't work
我想阅读玩家何时触摸屏幕以及何时不触摸屏幕。
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){ //ACTION UP
actionOnUP = true;
Log.v("MC", "Up");
}
if(event.getAction() == 0){ //ACTION DOWN
actionOnUP = false;
Log.v("MC", "Down");
}
Log.v("MC", event.getAction() + " ");
return super.onTouchEvent(event);
}
这段代码是的,它起作用了,但是仅当玩家触摸屏幕(ACTION_DOWN)时,但他没有触摸屏幕(ACTION_UP)时,什么也没发生:/
^这是LogCat的屏幕形式。 您会看到:这只是ACTION_DOWN,但与ACTION_UP无关。 类正在扩展视图:
public class MainClass extends SurfaceView implements SurfaceHolder.Callback {
你能帮助我吗?
编辑:我的游戏基于此教程: http : //www.droidnova.com/2d-tutorial-series-part-v,848.html
我的猜测是super.onTouchEvent返回false
,因为您正在调用的任何超类都不在乎touch事件。
如果您向onTouchEvent返回false
,则Android操作系统将不再向您通知该手势中的任何其他事件。 如果要继续接收触摸事件信息(例如ACTION_UP
),则必须对第一个ACTION_DOWN
事件返回true
。
“佩蒂”的解决方案对我有用! 除某些语法错误外,此处已纠正:
int code = event.getAction() & MotionEvent.ACTION_MASK;
if ((code == MotionEvent.ACTION_POINTER_UP) || (code == MotionEvent.ACTION_UP) || (code == MotionEvent.ACTION_CANCEL)) {
非常感谢。
尝试:
int action = event.getAction();
int code = action & MotionEvent.ACTION_MASK;
if (code == MotionEvent.ACTION_POINTER_UP || code == MotionEvent.ACTION_UP || MotionEvent.ACTION_CANCEL) {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.