我知道J2ME已经过时了,但是我必须为分配作业这样做。当前,我正在使用GameCanvas类,并且我的游戏是线程,因此我的代码如下所示。
class Game extends GameCanvas implements Runnable {
public GameCanvas() {
super(false);
}
public void run() {
while (true) {
draw();
flushGraphics();
}
}
protected void keyPressed(int keyCode) {
System.out.println("Hey, it actually worked.");
// other code to handle key press...
}
}
可悲的是,无论我的垃圾邮件在模拟器的数字键盘上受到多大的打击,都不会调用
keyPressed
方法。我知道getKeyStates()
具有的GameCanvas
方法,但是我不想使用它,因为我不仅要捕获游戏键,还要捕获数字键1〜9。有谁知道为什么我的代码不进入我的
keyPressed()
方法,以及我能做什么?非常感谢。不知道我哪里出了问题...但是在这里和那里进行了一些调整之后,它开始工作得很好。非常感谢你们! :)
最佳答案
您在Game#run
方法中有一个busy wait,最有可能导致设备忽略所有匹配,从而使UI失去响应能力。
为了简单测试上述假设是否正确,只需在循环中插入sleep
,如下所示:
while (true) {
draw();
flushGraphics();
try { Thread.sleep(100); } // sleep for 1/10 sec
catch (InterruptedException ie) { System.out.println(ie); }
}
如果上述方法有助于恢复UI响应能力,请重新设计应用程序以避免繁忙的等待-MIDP API提供了两种方法来实现这一目标。