2009-04-13 8 views
3

Я ищу эффективную систему ввода клавиатуры для игры на Java. В настоящее время я использую код, я нашел здесь:Система опроса клавиатуры

Keyboard Input Polling System

это кажется немного неэффективным, однако (пожалуйста, прокомментируйте, как ваши мысли о коде). Полный код доступен здесь:

Pastebin Code

Я только начал искать в новое решение и вытягивать код обособленно, но кто-нибудь есть какие-либо предложения для эффективного способа сделать это в основной игре цикл (включая объяснение)? Любая помощь будет оценена по достоинству.

ответ

3

Настроить KeyEventListener; при вызове, поместите текущий ключ в однокнопочный буфер.

В потоке вычислений или в потоке опроса периодически запрашивайте текущий буфер ключей. Теперь вместо этой константы, заглядывающей в I/O, у вас есть прослушиватель событий (который уже сильно оптимизирован и полностью реализован для использования основного оборудования), в то время как вы продолжаете проводить периодический опрос.

+1

Это не работает для нескольких ключей, которые являются общими в игре – Ron

1

Я думаю, что это отличный код. Связанный автор реализовал перенос данных стиля pull с клавиатуры вместо обычного метода pushListener. Эта реализация поддерживает N-key rollover, однако ограничение с USB составляет 6-8 клавиш одновременно.

Если вы хотите немного почистить его, сохраните только те ключи, на которые вы хотите обратить внимание. Однако это не спасет вас, только один int записывается в массив каждый раз при нажатии клавиши.

Что именно вы находите неэффективным? Для начала я не вижу никаких циклов в связанном коде.

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

  • Нет связанных вопросов^_^