请建议为 HTML5 画布创建关键事件的最佳方法。我不喜欢任何图书馆,但如果你认为这是最好的方法,那就去回答吧。提前致谢!
问问题
36139 次
3 回答
24
这将返回关键代码:
<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.");
}
或者,如果您有一长串要使用的键,请在开关盒中进行:
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
}
}
于 2012-09-03T01:59:37.410 回答
10
如果要在<canvas>
自身(而不是window
or )上设置关键事件处理,请在元素document
上设置 tabindex 。<canvas>
请注意,画布需要聚焦才能捕捉关键事件。
<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
。
于 2014-05-25T07:20:51.283 回答
2
我正在编写一个 Canvas 游戏,我使用默认值.addEventListener
并通过event.keyCode
它附带的 s 进行切换。此外,我不侦听 Canvas 元素本身的关键事件,而只是将侦听器设置为窗口。
window.addEventListener('keyup',keyUpListener,false);
window.addEventListener('keydown',keyDownListener,false);
于 2012-09-03T01:48:50.620 回答