繁体   English   中英

在onTouchEvent中,ACTION_UP不起作用

[英]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

^这是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM