2013-09-26 5 views
1

Привет, У меня есть следующий код в моем проекте Cesium и хотелось бы знать, как я могу использовать другие ключи, отличные от символов. Вот что я имею в минуту:Использование кодов клавиш для '+' и '-'

function getFlagForKeyCode(keyCode) { 
switch (keyCode) { 
case 'W'.charCodeAt(0): 
    return 'moveForward'; 
case 'S'.charCodeAt(0): 
    return 'moveBackward'; 
case 'Q'.charCodeAt(0): 
    return 'moveUp'; 
case 'E'.charCodeAt(0): 
    return 'moveDown'; 
case 'D'.charCodeAt(0): 
    return 'moveRight'; 
case 'A'.charCodeAt(0): 
    return 'moveLeft'; 
default: 
    return undefined; 
} 

}

Я хочу, чтобы иметь возможность использовать - и + ключи. Как я могу это достичь?

+0

Как вы получаете 'keyCode'? – Anton

ответ

0

вверх, вниз, влево и вправо используйте клавиши со стрелками, которые являются кодами 37-40, а клавиши + и - 187 и 189:

function getFlagForKeyCode(keyCode) { 
switch (keyCode) { 
case 187: 
    return 'moveForward'; 
case 189: 
    return 'moveBackward'; 
case 38: 
    return 'moveUp'; 
case 40: 
    return 'moveDown'; 
case 39: 
    return 'moveRight'; 
case 37: 
    return 'moveLeft'; 
default: 
    return undefined; 
} 

}

+0

187 без сдвига - символ «=». – Anton

+0

Да, это не имеет значения, хотя я просто хотел, чтобы этот ключ не был символом. – user2177781

2

Если ваш keyCode приходит от KeyUp/KeyDown события, вам нужно сделать что-то вроде этого:

document.addEventListener("keydown", function(e){ 
    if ((e.shiftKey && e.keyCode == 187) || e.keyCode == 107) { 
     e.keyCode = 43; // 43 - char code for "+" 
    } 

    if (e.keyCode == 189 || e.keyCode == 109) { 
     e.keyCode = 45; // 45 - char code for "-" 
    } 

    getFlagForKeyCode(e.keyCode); 

}, false); 

и расширить getFlagForKeyCode функция

function getFlagForKeyCode (keyCode) { 
    switch (keyCode) { 
    case 'W'.charCodeAt(0): 
     return 'moveForward'; 
    case 'S'.charCodeAt(0): 
     return 'moveBackward'; 
    case 'Q'.charCodeAt(0): 
     return 'moveUp'; 
    case 'E'.charCodeAt(0): 
     return 'moveDown'; 
    case 'D'.charCodeAt(0): 
     return 'moveRight'; 
    case 'A'.charCodeAt(0): 
     return 'moveLeft'; 
    case '+'.charCodeAt(0): 
     // return what you need 
    case '-'.charCodeAt(0): 
     // return what you need 
    default: 
     return undefined; 
    } 
} 
+0

Спасибо за ответ, но мне удалось найти более простое решение. – user2177781

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