• 键盘事件之子弹发射


     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8"/>
     5         <title>JavaScript实例</title>
     6         <style>
     7             #did{width:500px;height:500px;background-color:#ddd;position:relative;overflow:hidden;}
     8             #gid{width:50px;height:60px;background-color:red;position:absolute;top:150px;left:100px;}
     9             #p0,#p1,#p2,#p3,#p4{width:5px;height:10px;background-color:#000;position:absolute;}
    10         </style>
    11     </head>
    12     <body>
    13         <h2>JavaScript实例:键盘事件</h2>
    14         <div id="did">
    15             <div id="p0" style="display:none;"></div>
    16             <div id="p1" style="display:none;"></div>
    17             <div id="p2" style="display:none;"></div>
    18             <div id="p3" style="display:none;"></div>
    19             <div id="p4" style="display:none;"></div>
    20             
    21             <div id="gid"></div>
    22         </div>
    23         <script type="text/javascript">
    24             var gid = document.getElementById("gid");
    25             window.document.onkeydown = function(ent){
    26                 //获取兼容的事件对象
    27                 var event = ent || window.event;
    28                 //alert(event.keyCode);
    29                 //根据键盘值执行对应操作
    30                 switch(event.keyCode){
    31                     case 37: //左方向键
    32                         gid.style.left = Math.max(0,gid.offsetLeft-5)+"px";
    33                         break;
    34                     case 38: //上方向键
    35                         gid.style.top = Math.max(0,gid.offsetTop-5)+"px";
    36                         break;
    37                     case 39: //右方向键
    38                         gid.style.left = Math.min(450,gid.offsetLeft+5)+"px";
    39                         break;
    40                     case 40: //下方向键
    41                         gid.style.top = Math.min(440,gid.offsetTop+5)+"px";
    42                         break;
    43                     case 32: //空格键
    44                         shoot(gid.offsetLeft+24,gid.offsetTop); //发射炮弹
    45                         break;
    46                 }
    47             }
    48             
    49             //发射炮弹方法
    50             function shoot(x,y){
    51                 //遍历所有炮弹
    52                 for(var i=0;i<5;i++){
    53                     var p = document.getElementById("p"+i);
    54                     //判断炮弹是否可用
    55                     if(p.style.display=="none"){
    56                         p.style.top = y+"px";
    57                         p.style.left = x+"px";
    58                         p.style.display = "block";
    59                         //没有return 只能发射一枚
    60                         return;
    61                     }
    62                 }
    63             }
    64             
    65             //游戏主线程
    66             function running(){
    67                 //负责移动可见炮弹
    68                 for(var i=0;i<5;i++){
    69                     var p = document.getElementById("p"+i);
    70                     //判断炮弹是否可用
    71                     if(p.style.display=="block"){
    72                         p.style.top = p.offsetTop-5+"px";
    73                         //回收出了屏幕的炮弹
    74                         if(p.offsetTop<-10){
    75                             p.style.display = "none";
    76                         }
    77                     }
    78                 }
    79             
    80                 setTimeout("running()",33);
    81             }
    82             
    83             running();
    84         </script>
    85     </body>
    86 </html>

    上下左右键移动,空格发射子弹

  • 相关阅读:
    编解码学习笔记(十):Ogg系列
    php大小写问题
    thinkphp5内置标签
    php递归实现无限级分类
    thinkphp5项目--企业单车网站(五)
    控制器不存在:appadmincontrollerDocument
    Cookie与Session的区别与联系及生命周期
    thinkphp5项目--企业单车网站(四)
    thinkphp5项目--企业单车网站(三)
    thinkphp使后台的字体图标显示异常
  • 原文地址:https://www.cnblogs.com/z-e-r-o/p/6180420.html
Copyright © 2020-2023  润新知