首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为HTML5 canvas注册onkeydown事件

如何为HTML5 canvas注册onkeydown事件
EN

Stack Overflow用户
提问于 2013-03-26 15:55:43
回答 2查看 7.1K关注 0票数 6

我想写一个用HTML5 <canvas> element的蛇游戏演示。我试图注册Keyboard(onkeydown)事件,但它不起作用。

代码:

代码语言:javascript
复制
   canvas.onkeydown = divertDirection; //don't work
   //canvas.addEventListener("keydown", divertDirection, false);  //don't work

   //根据键盘来调振蛇移动的方向
   function divertDirection(ev) {
        console.log(ev);
    }

    //register this event for widnow
   window.addEventListener("keydown", divertDirection, false); //ok
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-11 09:28:50

正如jing3142所说,您不能监听不是为它们设计的元素上的键盘事件。

但是,您可以强制为它们设计图元。

代码语言:javascript
复制
canvas.tabIndex = 1000;

现在您可以将canvas.addEventListener与键盘事件一起使用。

这比window.addEventListener更可取,因为这样就不会干扰页面上的任何其他元素,比如实际的输入元素。

请注意,当画布具有焦点时,您可能会在某些浏览器中看到虚线轮廓。要删除此文件,请执行以下操作:

代码语言:javascript
复制
canvas.style.outline = "none";

玩得开心!

票数 11
EN

Stack Overflow用户

发布于 2013-03-26 17:49:38

如果HTML元素不是为文本输入而设计的,那么您就不能为它设置keydown事件。

正如您所做的使用

代码语言:javascript
复制
window.addEventListener("keydown", divertDirection, false);

然后使用divertDirection函数更改蛇对象的方向。如果您有多条蛇,则对每条蛇使用不同的关键点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15631991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档