zoukankan      html  css  js  c++  java
  • 运用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的方法获取样式,非内联式方法定义的样式是获取不到的哦。

  • 相关阅读:
    在Unity中实现屏幕空间阴影(2)
    在Unity中实现屏幕空间阴影(1)
    在Unity中实现屏幕空间反射Screen Space Reflection(4)
    在Unity中实现屏幕空间反射Screen Space Reflection(3)
    在Unity中实现屏幕空间反射Screen Space Reflection(2)
    在Unity中实现屏幕空间反射Screen Space Reflection(1)
    AFO
    链接
    网络流24题
    本蒟蒻博客声明
  • 原文地址:https://www.cnblogs.com/FrankLongger/p/8995202.html
Copyright © 2011-2022 走看看