请提供创建HTML5画布的关键事件的最佳方式。我不喜欢任何库,但如果您认为这是最好的方法,请回答。谢谢!
请提供创建HTML5画布的关键事件的最佳方式。我不喜欢任何库,但如果您认为这是最好的方法,请回答。谢谢!
<canvas id="myCanvas" width="200" height="100" style="background:green"></canvas>
<script type="text/javascript">
window.addEventListener('keydown',this.check,false);
function check(e) {
alert(e.keyCode);
}
</script>
function check(e) {
var code = e.keyCode;
//Up arrow pressed
if (code == 38)
alert("You pressed the Up arrow key");
else
alert("You pressed some other key I don't really care about.");
}
如果您有一长串需要使用的键,可以使用switch case语句:
function check(e) {
var code = e.keyCode;
switch (code) {
case 37: alert("Left"); break; //Left key
case 38: alert("Up"); break; //Up key
case 39: alert("Right"); break; //Right key
case 40: alert("Down"); break; //Down key
default: alert(code); //Everything else
}
}
如果您想在<canvas>
本身上设置键事件处理(而不是window
或document
),请在<canvas>
元素上设置tabindex属性。请注意,画布需要处于焦点状态才能捕获键事件。
<script>
document.getElementById('game').addEventListener('keypress', handleKeyPress);
function handleKeyPress(e) { ... }
</script>
<canvas id="game" tabindex="1" width="350" height="200">
</canvas>
这就是在Processing.js网站上的操作方式。
如果您不想在单击画布时出现边框,请将其样式设置为outline: none
。
canvas
标签中添加HTML属性“tabindex”,并为其赋一个整数值。Tabindexes本身不在本问题的范围之内:https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex - Brian Duncan我正在编写一个Canvas游戏,使用默认的.addEventListener
并通过event.keyCode
进行事件处理。此外,我没有在Canvas元素本身上监听键盘事件,而是将监听器设置在窗口上。
window.addEventListener('keyup',keyUpListener,false);
window.addEventListener('keydown',keyDownListener,false);