2012-03-20 5 views
1

Я использую keyboard_key переменную здесь:нажмите клавишу J2ME Combo (несколько ключей сразу)

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

обнаружить если клавиша была нажата на мобильном телефоне.

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

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

ответ

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, если в настоящий момент клавиша находится вверх и не была нажата вообще с момента последнего вызова этого метода. Это блокировочное поведение гарантирует, что быстрый и пресс-релиз ключа всегда будут пойманное игровым циклом, независимо от того, как медленно проходит цикл ...

+0

[Важные ограничения и недостатки: большинство телефонов не поддерживают несколько одновременных нажатий клавиш.] (Http://www.gamedev.net/page/resources/_/technical/mobile-development/an-introduction-to-developing -for-mobile-device-r1949) –

+0

Статья @JarrodRoberson, на которую вы ссылаетесь, ничего не говорит о соответствующем API ('GameCanvas.getKeyStates'). Он датирован июнем 2003 года - около 10 лет назад и только примерно через полгода после того, как MIDP 2 ([JSR 118] (http://www.jcp.org/en/jsr/detail?id=118)) завершена - когда он даже не приближался к мейнстриму. В то время игровые функции в телефонах MIDP (1.0, JSR 37) действительно засасывались, но это было давно. – gnat

-1

По all the documentation I have read вы не можете надежно сделать одновременно кнопочным нажатие на J2ME на всех аппаратных средствах, оно не поддерживается всеми производителями на всех их аппаратных средствах. Поэтому рекомендуется не пытаться делать это из-за этого.

+0

hmm шестая ссылка, показанная мне в вашем поисковом URL указывает на [Начало работы с API игры MIDP 2.0] (http://developers.sun.com/mobility/midp/articles/gameapi/), в котором говорится: ** ". ..'GameCanvas.getKeyStates() 'сообщает вам, когда одновременно нажата несколько клавиш. ** ** – gnat

+0

, если вы читаете больше ссылок и сообщений на форуме, общий консенсус в MIDP 2.0 API обычно избегается, и не все API-интерфейсы полностью поддерживаются всеми производителями. См. Следующее -> [Важные ограничения и ошибки: большинство телефонов не поддерживают несколько одновременных нажатий клавиш.] (Http://www.gamedev.net/page/resources/_/technical/mobile-development/an-introduction-to -developing-for-mobile-device-r1949) –

+0

Если вы измените строку поиска на что-то вроде _can, вы обнаружите одновременное нажатие клавиш в j2me getKeyStates -javascript_, вы можете найти немного другое «консенсус», – gnat

Смежные вопросы