Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > JAVA Micro Edition

JAVA Micro Edition Низкоуровневое программирование мобильных телефонов.

Ответ
 
Опции темы
Старый 03.10.2011, 16:44   #1
Aarrgghh
AnyKey`щик
 
Регистрация: 03.10.2011
Сообщений: 9
Написано 0 полезных сообщений
(для 0 пользователей)
Вопрос Нажатие клавиш в GameCanvas

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

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

Вопрос, как реализовать, что бы при удерживании клавиши, точка двигалась до тех пор, пока клавиша не будет отпущена?
(Offline)
 
Ответить с цитированием
Старый 03.10.2011, 18:19   #2
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Нажатие клавиш в 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;
    }
}
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Aarrgghh (03.10.2011)
Старый 03.10.2011, 18:32   #3
Aarrgghh
AnyKey`щик
 
Регистрация: 03.10.2011
Сообщений: 9
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Нажатие клавиш в GameCanvas

Спасибо большой! пойду юзать
(Offline)
 
Ответить с цитированием
Старый 03.10.2011, 19:09   #4
Aarrgghh
AnyKey`щик
 
Регистрация: 03.10.2011
Сообщений: 9
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Нажатие клавиш в GameCanvas

И еще вопрос: можно ли сделать, что бы при нажатии одновременно 2х клавиш, 2 и 6 например, выполнялось какое либо действие?
(Offline)
 
Ответить с цитированием
Старый 04.10.2011, 15:24   #5
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Нажатие клавиш в GameCanvas

Можно, но тебе придется создать отдельный класс, в котором будут храниться состояния всех клавиш, и управлять этими состояниями из keyPressed() и keyReleased().
(Offline)
 
Ответить с цитированием
Старый 07.10.2011, 20:36   #6
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: Нажатие клавиш в GameCanvas

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

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Romanzes (08.10.2011)
Старый 08.10.2011, 20:39   #7
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Нажатие клавиш в GameCanvas

Не обратил внимание, что автору нужен GameCanvas. Просто привык всегда пользоваться обычным Canvas.
(Offline)
 
Ответить с цитированием
Старый 11.10.2011, 22:01   #8
Aarrgghh
AnyKey`щик
 
Регистрация: 03.10.2011
Сообщений: 9
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Нажатие клавиш в GameCanvas

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

А в GameCanvas возможно задействовать кнопки * и #. Если да то как? У меня получалось только в простом Канвасе.. Или может я что то недопонимаю?
(Offline)
 
Ответить с цитированием
Старый 12.10.2011, 20:37   #9
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Нажатие клавиш в GameCanvas

Ну, GameCanvas - потомок от простого Canvas, поэтому можешь сделать так же, как и делал в простом канвасе.
(Offline)
 
Ответить с цитированием
Старый 21.10.2011, 01:51   #10
Aarrgghh
AnyKey`щик
 
Регистрация: 03.10.2011
Сообщений: 9
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Нажатие клавиш в GameCanvas

Сообщение от Romanzes Посмотреть сообщение
Ну, GameCanvas - потомок от простого Canvas, поэтому можешь сделать так же, как и делал в простом канвасе.
Тогда супер классу нужно передать параметр false?
super(false);
А метод getKeyStates() будет после этого так же действовать? Или придется все события нажатий ловить в keyPressed(int keyCode)?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com