我想在玩家触摸屏幕时阅读,何时不阅读。
@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
答案 0 :(得分:48)
我的猜测是super.onTouchEvent正在返回false
,因为你所调用的任何超类都不关心触摸事件。
如果您将false
返回onTouchEvent,则Android操作系统将不再通知您该手势中的任何其他事件。如果您想继续接收触摸事件信息(例如ACTION_UP
),则必须将true
返回到第一个ACTION_DOWN
事件。
答案 1 :(得分:1)
" petey"的解决方案为我工作! 除了一些语法错误,请在此处更正:
int code = event.getAction() & MotionEvent.ACTION_MASK;
if ((code == MotionEvent.ACTION_POINTER_UP) || (code == MotionEvent.ACTION_UP) || (code == MotionEvent.ACTION_CANCEL)) {
非常感谢。
答案 2 :(得分:0)
尝试:
int action = event.getAction();
int code = action & MotionEvent.ACTION_MASK;
if (code == MotionEvent.ACTION_POINTER_UP || code == MotionEvent.ACTION_UP || MotionEvent.ACTION_CANCEL) {