【发布时间】:2011-01-23 14:57:09
【问题描述】:
谁能告诉我这是怎么回事?我的控制台没有抛出任何异常。
function onKeyDown(){
var e = event.keyCode;
//if (e==87 /*w*/){
up = true;
throw('up');
//}
if (e==65 /*a*/){
left = true;
}
if (e==83 /*s*/){
down = true;
}
if (e==68 /*d*/){
right = true;
}
}
function onKeyUp(){
var e = event.keyCode;
//if (e==87 /*w*/){
up = false;
throw('up');
//}
if (e==65 /*a*/){
left = false;
}
if (e==83 /*s*/){
down = false;
}
if (e==68 /*d*/){
right = false;
}
}
Okay, so that was the javascript, and this is the html:
<body>
<input id="ss" type="button" value="start/stop" />
<div id="container" style="border:1px solid; cursor:none; width:480px; height:320px;">
<canvas id="canvas" width="480" height="320" onkeyup="onKeyUp();" onkeydown="onKeydown();">
Canvas not displaying.
</canvas>
</div>
</body>
Edit: current code:
window.onload = 函数(){ 在里面(); };
function init(){
initSettings();
initImages();
document.getElementById('canvas').onkeydown = function(event) {
var e = event.keyCode;
//if (e==87 /*w*/){
up = true;
throw('up');
//}
if (e==65 /*a*/){
left = true;
}
if (e==83 /*s*/){
down = true;
}
if (e==68 /*d*/){
right = true;
}
}
【问题讨论】:
-
我不知道背后的原因,但是在我看到的所有代码中都有处理关键事件的画布,我看到事件是在窗口中注册的,而不是在画布上。这是一个例子:html5.litten.com/make-a-maze-game-on-an-html5-canvas/#thecode
-
那是用JQuery吗,因为我没用。
-
不,不是……你看代码了吗?它显示在同一页面上。 Sarwar 的观点是它是一个使用画布的页面示例,但它将其键盘事件处理程序附加到
window对象(尽管我可能会添加在 IE 中不起作用的方式),而不是画布,这可能成为您的问题(另请参阅下面的三十多点评论)。
标签: javascript css html canvas