andEngine在onSceneTouchEvent中无法获取ACTION_UP事件

3

我在使用场景触摸监听器时遇到了一些问题。我只收到 ACTION_DOWN 事件,但是没有收到 ACTION_UP 或 ACTION_MOVE 事件。我做错了什么?请帮助我。

我已经按照以下方式重写了 onSceneTouchEvent:

@Override
public boolean onSceneTouchEvent(final Scene pScene,
        final TouchEvent pSceneTouchEvent) {
    switch (pSceneTouchEvent.getAction()) {
    case TouchEvent.ACTION_DOWN:
        Log.d(TAG, "onSceneTouchEvent # ACTION_DOWN");
        break;
    case TouchEvent.ACTION_UP:
        Log.d(TAG, "onSceneTouchEvent # ACTION_UP");
        break;
    }
    return true;
}

*注意:我已经返回true,但仍只得到ACTION_DOWN。


嗯,这很奇怪。我在这里看不出任何问题,并且我使用了类似的东西 - 尽管我的场景还没有最终确定。但这应该不是原因。你尝试过检查动作事件吗?像这样:if(event.getAction() == motionEvent.ACTION_MOVE) 或者 if(event.getAction() == MotionEvent.ACTION_DOWN)。如果这个被注册了,那就有趣了。 - GameDroids
哦,抱歉,刚才没注意到你已经说过了。 - GameDroids
非常感谢您的回复。我按照您的解决方案进行了操作,但仍然存在相同的问题。(T_T) - Watcharin.s
将以下代码放在switch语句前面:Log.i("Logged TouchEvents", ""+pSceneTouchEvent.getAction()); 你得到了哪些操作? - JohnEye
2个回答

1

永远不要使用switch case语句。因为它只会选择一个case,而且第一个被选中的action将会一直执行,其他的action将被忽略。

相反,应该使用以下方法:

if(pSceneTouchEvent.isActionDown){
   //code action down here
}
if(pSceneTouchEvent.isActionMove){
   //code action move here
}
if(pSceneTouchEvent.isActionUp){
   //code action up here
}

0

你在其他地方监听了场景触摸事件吗?可能是你在那里监听了操作并处理它(返回 true),然后再传播到这个监听器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接