Вниз  Java-программирование (1-ые посты)
- 27.01.2015 / 01:28
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Ксакеп, Конечно. Это же основа всего.
__________________
 let live
- 27.01.2015 / 21:44
Kalter
  Пользователь

Kalter 
Сейчас: Offline
А подобная реализация java.awt.event.KeyAdapter (для ловли нажатой в данной момент кнопки) может считаться костыльной? Может, есть какие-нибудь альтернативы? Например, в Java ME можно ловить кнопку с помощью метода getKeyStates() из javax.microedition.lcdui.game.GameCanvas. Сейчас рисование происходит на java.awt.Canvas, из-за чего, собственно, и появился вопрос.
Открыть спойлер

__________________
 Homo homini penis est.

Изменено Kalter (27.01 / 21:44) (всего 1 раз)
- 27.01.2015 / 21:58
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Kalter, у меня вообще заведен ArrayList для всех нажатых кнопок. Boolean точно не самое гибкое решение

Изменено DominaN (27.01 / 21:58) (всего 1 раз)
- 27.01.2015 / 21:59
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Kalter, нормальная реализация.
Ещё можно не заводить на каждую кнопку по boolean'у, а использовать HashMap.
__________________
 let live
- 27.01.2015 / 22:19
DominaN
  Пользователь

DominaN 
Сейчас: Offline
aNNiMON, ArrayList достаточно, зачем HashMap?
- 27.01.2015 / 22:46
Kalter
  Пользователь

Kalter 
Сейчас: Offline
Спасибо.

Здесь нужно смотреть по типу контейнера. Кажется, лучше использовать HashMap. А если и List, то его реализацию LinkedList.
__________________
 Homo homini penis est.

Изменено Kalter (27.01 / 22:46) (всего 1 раз)
- 27.01.2015 / 23:10
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Kalter, не, LinkedList вообще бессмысленно, только больше тормозить будет. Не забывай, что нажатие клавиш - абсолютно ни с чем не синхронизированный процесс, тут уж как игроку приспичит. Если хочешь, могу привести пример, как сделано у меня. Класс AFTRuntime максимально отвязан от листенера клавиш, а реализовывает лишь хранение и управление нажатыми клавишами
- 27.01.2015 / 23:19
Kalter
  Пользователь

Kalter 
Сейчас: Offline
Цитата DominaN:
тут уж как игроку приспичит
Представил :gg: Впрочем то да, ArrayList должно хватить. Попробуй привести пример, интересно.
__________________
 Homo homini penis est.
- 27.01.2015 / 23:33
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Kalter,
  1. public static ArrayList<Integer> keychain = new ArrayList<>(1); //Pressed buttons will be stored here.
  2.  
  3.     public static boolean keyPressed(int key) {
  4.         return (keychain.contains(key));
  5.     }
  6.  
  7.     public static void pressKey(int key) {
  8.         if (!keyPressed(key)) keychain.add(key);
  9.     }
  10.  
  11.     public static void resetKey(int key) {
  12.         if (keyPressed(key)) keychain.remove(keychain.indexOf(key));
  13.     }
  14.  
  15.     public static void resetKeys() {
  16.         keychain.clear();
  17.     }

- 27.01.2015 / 23:53
Kalter
  Пользователь

Kalter 
Сейчас: Offline
DominaN, выглядит прилично, и связка с кнопочным листенером хорошая. Спасибо.
__________________
 Homo homini penis est.
Наверх  Всего сообщений: 16875
Фильтровать сообщения
Поиск по теме
Файлы топика (794)