J2ME Combo按键(一次多个键)

时间:2012-03-20 17:38:44

标签: java java-me midp lcdui

我在这里使用keyboard_key变量:

    //overrides the function keyPressed from "lcdui.Canvas"
    protected void keyPressed(int keyCode){
        keyboard_key = keyCode;
    }

检测手机上是否按下了任何键。

但它只返回最近按下的键,它不会告诉是否有任何其他键被按下。请帮忙!

顺便说一下,我使用NetBeans 7.0.1作为IDE。

1 个答案:

答案 0 :(得分:0)

  

...它只返回最近按下的键,并且不会告诉是否有任何其他键被按下

您在代码段中使用它的方式keyboard_key将始终只包含最近按下的键 - 只是因为它“没有空间”来容纳更多内容。

考虑使用Vector“记住”按下的不同键。

    //define in your class:
    Vector keysPressed = new Vector(); // to keep track of keys pressed

    //overrides the function keyPressed from "lcdui.Canvas"
    protected void keyPressed(int keyCode){
        keysPressed.addElement(new Integer(keyCode));
    }

在给出问题的旁注中,您可以从学习Java语言基础知识中受益。网上有很多教程 - 只需在网上搜索“Java入门”等内容。

根据您的应用程序要求,请考虑覆盖keyRepeated以及keyPressed。


如果您打算以游戏循环方式处理按键操作(“多个键一次”建议您可能会考虑到这一点),请考虑lcdui.game.GameCanvas提供的其他选项API,方法getKeyStates()

  

获取物理游戏键的状态。返回的整数中的每个位代表设备上的特定键。如果该键当前已关闭或自上次调用此方法以来至少按过一次,则键的位将为1。如果该键当前处于启动状态并且自上次调用此方法以来尚未按下该位,则该位将为0。这种锁定行为可确保游戏循环始终捕获快速按键和释放,无论循环运行的速度有多慢......

相关问题