forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JAVA Micro Edition (http://forum.boolean.name/forumdisplay.php?f=52)
-   -   Нажатие клавиш в GameCanvas (http://forum.boolean.name/showthread.php?t=15583)

Aarrgghh 03.10.2011 16:44

Нажатие клавиш в GameCanvas
 
Появился у меня вот такой вопрос!

у меня в Canvas рисуется на экран точка. При нажатии клавиш 2,8,4,6 она передвигается на 1 пиксел верх, вниз, влево и вправо соответственно. Проблема в том, что при удерживании клавиши точка передвигается только на 1 пиксел и более не двигается, до тех пор пока снова не нажмешь на клавишу.

Вопрос, как реализовать, что бы при удерживании клавиши, точка двигалась до тех пор, пока клавиша не будет отпущена?

Romanzes 03.10.2011 18:19

Ответ: Нажатие клавиш в GameCanvas
 
Код:

private int lastKey;

public void keyPressed(int key) {
    lastKey = key;
}

public void keyReleased(int key) {
    lastKey = 0;
}

public void keyAction() {
    switch (lastKey) {
        case Canvas.UP:
            //двигаешь свою точку
            break;
        case Canvas.DOWN:
            //и так далее
            break;
    }
}


Aarrgghh 03.10.2011 18:32

Ответ: Нажатие клавиш в GameCanvas
 
Спасибо большой! :) пойду юзать

Aarrgghh 03.10.2011 19:09

Ответ: Нажатие клавиш в GameCanvas
 
И еще вопрос: можно ли сделать, что бы при нажатии одновременно 2х клавиш, 2 и 6 например, выполнялось какое либо действие?

Romanzes 04.10.2011 15:24

Ответ: Нажатие клавиш в GameCanvas
 
Можно, но тебе придется создать отдельный класс, в котором будут храниться состояния всех клавиш, и управлять этими состояниями из keyPressed() и keyReleased().

YellowAfterlife 07.10.2011 20:36

Ответ: Нажатие клавиш в GameCanvas
 
... а что мешает использовать (GameCanvas).getKeyStates()?
Код:

int keys = this.getKeyStates(); // вызывать из Canvas
if ((keys & GameCanvas.UP_PRESSED) != 0)
{
// нажата кнопка вверх
}
// аналогично для других.


Romanzes 08.10.2011 20:39

Ответ: Нажатие клавиш в GameCanvas
 
Не обратил внимание, что автору нужен GameCanvas. Просто привык всегда пользоваться обычным Canvas.

Aarrgghh 11.10.2011 22:01

Ответ: Нажатие клавиш в GameCanvas
 
Цитата:

Сообщение от YellowAfterlife (Сообщение 205029)
... а что мешает использовать (GameCanvas).getKeyStates()?
Код:

int keys = this.getKeyStates(); // вызывать из Canvas
if ((keys & GameCanvas.UP_PRESSED) != 0)
{
// нажата кнопка вверх
}
// аналогично для других.



А в GameCanvas возможно задействовать кнопки * и #. Если да то как? У меня получалось только в простом Канвасе.. Или может я что то недопонимаю?

Romanzes 12.10.2011 20:37

Ответ: Нажатие клавиш в GameCanvas
 
Ну, GameCanvas - потомок от простого Canvas, поэтому можешь сделать так же, как и делал в простом канвасе.

Aarrgghh 21.10.2011 01:51

Ответ: Нажатие клавиш в GameCanvas
 
Цитата:

Сообщение от Romanzes (Сообщение 205628)
Ну, GameCanvas - потомок от простого Canvas, поэтому можешь сделать так же, как и делал в простом канвасе.

Тогда супер классу нужно передать параметр false?
Код:

super(false);
А метод getKeyStates() будет после этого так же действовать? Или придется все события нажатий ловить в keyPressed(int keyCode)?


Часовой пояс GMT +4, время: 18:40.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot