Нажатие комбинированной клавиши J2ME (несколько клавиш одновременно) - PullRequest
1 голос
/ 20 марта 2012

Я использую переменную keyboard_key отсюда:

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

, чтобы определить, была ли нажата какая-либо клавиша на мобильном телефоне.

Но она возвращает только клавишу, которая была нажата в последнее время, ион не говорит, может ли быть нажата какая-либо другая клавиша.Пожалуйста, помогите!

Кстати, я использую NetBeans 7.0.1 в качестве IDE.

1 Ответ

0 голосов
/ 20 марта 2012

... возвращает только ту клавишу, которая была нажата в последнее время, и не сообщает, может ли быть нажата какая-либо другая клавиша

То, как вы используете его в своем фрагменте кода, 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 Getting Started» .

В зависимости от требований вашего приложения рассмотрите возможность переопределения keyRepeated вместе с keyPressed.


Если вы намереваетесь обрабатывать нажатия клавиш в игровом цикле ( «несколько клавиш одновременно» предполагают, что вы можете иметь это в виду), рассмотрите другой вариант, предоставляемый lcdui.game.GameCanvas API, метод getKeyStates ()

Получает состояния физических игровых ключей. Каждый бит в возвращаемом целом числе представляет определенный ключ на устройстве. Бит клавиши будет равен 1, если клавиша в данный момент нажата или была нажата хотя бы один раз с момента последнего вызова этого метода. Бит будет равен 0, если клавиша в данный момент поднята и не нажималась вообще с момента последнего вызова этого метода. Такое поведение с фиксацией гарантирует, что быстрое нажатие и отпускание клавиши всегда будет зафиксировано игровым циклом, независимо от того, насколько медленно он работает ...

...