我在应用程序中重写了onKeyDown
和onMotionEvent
。这两个工作,但onKeyDown
有奇怪的行为。我总是可以与设备上的屏幕进行交互,但在与屏幕交互后,按钮不起作用。为了让他们再次工作,我必须推动其他按钮(我不使用的按钮),以便他们再次工作。如果我再次与屏幕交互,这些按钮将不会再工作。Android:与屏幕交互锁定按钮
我正在编写的应用程序是一个游戏,所以按钮调用是对表面进行的,然后传递给运行游戏的线程。
我在HTC Aria上调试,但问题仍然存在于我的模拟器中。
EDIT
基本代码我有相同是详细here。
代码的按钮如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent msg) {
return thread.doKeyDown(keyCode, msg);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return thread.doTouchEvent(event);
}
public boolean doKeyDown(int keyCode, KeyEvent msg) {
synchronized (mSurfaceHolder) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
showDialog(DIALOG_PAUSED_ID);
return true;
}
return false;
}
}
public boolean doTouchEvent(MotionEvent event) {
synchronized (mSurfaceHolder) {
if (mState == STATE_PLAYING) {
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE){
if (event.getX() > 2 * (mWallX/3)) {
//shoot arrow
shoot(event.getX(), event.getY());
//turn player
mPlayer.rotate(event.getX(), event.getY());
return true;
} else if (event.getAction() != MotionEvent.ACTION_MOVE && event.getX() < 2 * (mWallX/3)) {
//temp button on left for stress test
stressTest = !stressTest;
return true;
}
}
}
return false;
}
}
你从onKeyDown返回什么? – 2010-11-21 07:47:42
你是否阻止UI线程?即将控制从事件处理程序传递给游戏代码。你能发布有问题的代码吗? – 2010-11-21 09:08:00
后期代码..你可能会阻止UI线程,这将描述你所看到/体验的关键行为 – 2010-11-21 13:19:57