Fork me on GitHub

运用KeyCode在浏览器中按WASD使图形运动

如何实现在浏览器中按WASD四个键使图形上下左右运动呢?

其实很简单,用keyCode方法就可以实现了。

先放个div在html中:

1 <div id="ball" style="left: 0px;top: 0px"></div>

在div中设置内联css样式,至于为什么要设置内联式,之后在解释。

css部分:

1 <style>
2     div{
3         height: 100px;
4         width: 100px;
5         background: #0ff;
6         border-radius: 50px;
7         position: absolute;
8     }
9 </style>

因为在div中设置了left和top属性,所以必须设置绝对定位

那么接下来就是js部分了:

1 var key={
2         W:87,S:83,A:65,D:68 
3     }

声明一个变量key,存放WASD四个按键的Unicode码。

 1 function keymove(e){
 2             var ball=document.getElementById('ball');
 3             var left=parseInt(ball.style.left);
 4             var top=parseInt(ball.style.top);
 5             switch(e.keyCode){
 6                 case key.W:
 7                     ball.style.top=top-2+'px';
 8                 break;
 9                 case key.S:
10                     ball.style.top=top+2+'px';
11                 break;    
12                 case key.A:
13                     ball.style.left=left-2+'px';
14                 break;    
15                 case key.D:
16                     ball.style.left=left+2+'px';
17                 break;    
18             }
19         }
20         document.onkeydown=keymove;

写一个函数keymove参数为e(随意什么英文都可以),因为元素的属性值是字符串,所以需要用parseInt方法将其转换成int数据类型,接下来要用一系列的判断语句,if或者switch语句都可以,这里我用switch是因为更方便些。

参数名.keyCode的返回值是用户摁下键盘按键对应的Unicode码值。

最后调用函数,当触发onkeydown事件时执行函数,keyCode还可以用于onkeypress和onkeyup事件中。

最后回答为什么left和top属性用内联式而不用嵌入式方法,这里设置及到一些知识点:

在js中 element指的是js获取的dom对象,

而element.style则代表js获取的内联式样式,如果对象没有内联式,则为空对象。

当然有别的获取对象样式的方法可以获取非内联式的样式,但是如果用element.style的方法获取样式,非内联式方法定义的样式是获取不到的哦。

 

posted @ 2018-05-05 16:57  lliiooiill  阅读(710)  评论(0编辑  收藏  举报