2014-02-05 3 views
0

В настоящее время я работаю над «игрой», в которой я сталкиваюсь с проблемами с элементами управления. В настоящее время я использую числовые значения keyCode (потому что они кажутся более эффективными и красивыми для меня), хотя ничего не происходит, когда вы пытаетесь связать следующие ключи со следующими значениями: & с 49, é с 50 », с 222.Обработка ключевых кодов

Я получил коды из http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes и это первые проблемы, с которыми я столкнулся с этим.

Как примечание стороны, я использую Mac и AZERTY-клавиатуру.

Спасибо заранее,

Фактический код:

void keyPressed() { 
    if (mode == "azerty") { 
    if (key == CODED) { 
     if (keyCode == 38) { 
     keybool[0] = true; 
     } 
     else if (keyCode == 40) { 
     keybool[1] = true; 
     } 
     if (keyCode == 37) { 
     keybool[2] = true; 
     } 
     else if (keyCode == 39) { 
     keybool[3] = true; 
     } 
     if (keyCode == 16) { 
     keybool[4] = true; 
     } 
     if (keyCode == 49) { 
     keybool[5] = true; 
     } 
     if (keyCode == 50) { 
     keybool[6] = true; 
     } 
     if (keyCode == 222) { 
     keybool[7] = true; 
     } 
    } 
    } 
} 
void keyReleased() { 
    if (mode == "azerty") { 
    if (key == CODED) { 
     if (keyCode == 38) { 
     keybool[0] = false; 
     } 
     else if (keyCode == 40) { 
     keybool[1] = false; 
     } 
     if (keyCode == 37) { 
     keybool[2] = false; 
     } 
     else if (keyCode == 39) { 
     keybool[3] = false; 
     } 
     if (keyCode == 16) { 
     keybool[4] = false; 
     } 
     if (keyCode == 49) { 
     keybool[5] = false; 
     } 
     else if (keyCode == 50) { 
     keybool[6] = false; 
     } 
     else if (keyCode == 222) { 
     keybool[7] = false; 
     } 
    } 
    } 
} 
void keyFunc() { 
    if (keybool[0]) { 
    player.move(1); 
    } 
    else if (keybool[1]) { 
    player.move(-1); 
    } 
    if (keybool[2]) { 
    player.turn(-0.5); 
    } 
    else if (keybool[3]) { 
    player.turn(0.5); 
    } 
    if (keybool[4]) { 
    } 
    if (keybool[5]) { 
    player.attack(0); 
    } 
    else if (keybool[6]) { 
    player.attack(1); 
    } 
    else if (keybool[7]) { 
    player.attack(2); 
    } 

} 


void attack(int attackNum) { 
    if (attackNum == 0) { 
    println("SLASH!"); 
    } else if (attackNum == 1) { 
    println("STAB!"); 
    } else if (attackNum == 2) { 
    println("PUMMEL!"); 
    } 
    } 
+0

Вы можете разместить код, который вы пытаетесь запустить? –

+0

Добавлен код. – stinodes

+0

Что такое ваш вопрос? – AlexWien

ответ

0

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

switch (keyCode) { 
case 38: // Up 
    break; 
case 40: // Down 
    break; 
case 37: // Left 
    break; 
case 39: // Right 
    break; 
default: 
    System.out.println("case " + keyCode + ": // " + KeyEvent.getKeyText(keyCode) + "\nbreak;"); 
} 

Пример вывода:

case 112: // F1 
break; 
case 113: // F2 
break; 
case 69: // E 
break; 
case 10: // Enter 
break; 
case 18: // Alt 
break; 
case 115: // F4 
break; 

Вы можете поставить эта строка в метод.

Вы также можете быть заинтересованы в этом методе (который использует отражение), который получает значение scancode, значение ключевого слова на языке клавиатуры, но это работает только в Windows. Очень грустно, что мы не получаем простой «Это аппаратный ключ, и это номер, который его идентифицирует». информации на Java. :(

https://stackoverflow.com/a/26688875/3500521

0

Эти коды, которые вы указали, являются кодами клавиш javascript. Почему красивые описания Key Event? VK_QUOTEDBL, VK_AMPERSAND и т. Д. Читаемость важна, но не так важна, как функциональность.

+0

Я пробовал эти, но я получил ошибку «* insert key * не был найден». – stinodes

+0

Действительно? Это в списке: http : //docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html#VK_INSERT –

+0

«С 2007 года компьютеры Apple Macintosh заменили ключ вставки клавишей Fn, чтобы разрешить использование верхний ряд как «медиа-ключи», так и традиционные клавиши « http://en.wikipedia.org/wiki/Insert_key –

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