• JS关于小球撞墙问题


      学习了JS,自己写了一个关于小球撞墙的小练习,呈现的的效果是点击框里的空白会出现小球去撞红色的墙,墙后面有一个血槽,小球撞一下,血槽的血就少一格,当血槽里的血都消失时,墙消失.下面是具体实现的代码.

    一.首先是body里的内容:创建一个大的div块,里面包含两个元素,是两个div快当作墙和血槽

    <body>
          <div id="wrap">
               <div id="wall"></div>
               <div id="blood"></div>
          </div>
    </body>

    二.是css中的样式

     *{

        margin:0;

        padding:0;

      }

    #wrap{

        800px;

        height:300px;

        border:1px solid black;

        position:relative;

        margin: 50px auto;

    }

    #wall{

        50px;

        height:100px;

        background:red;

        position:absolute;

        top:100px;

        right:50px;

    }

    #blood{

       10px;

       height:100px;

       border:1px solid black;

       background:red;

       box-sizing:border-box;

       position:absolute;

       top:100px;

       right:30px;

    }

    #ball{

       30px;

       height:30px;

       background:purple;

       border-radius:50%;

       position:absolute;

       top:135px;

       left:0;

    }

    .sblood{

        10px;

        height:10px;

        background:red;

        border:1px solid black;

        box-sizing:border-box;

    }

    三.JS中的代码

    <script type="text/javascript">
        var wrap = document.getElementById('wrap');
        var wall = document.getElementById('wall');
        var blood = document.getElementById('blood');

      补血
       var sblood;
       for(var i=0;i<10;i++){
       sblood = document.createElement('div');
       sblood.className = 'sblood';
       blood.appendChild(sblood);
    }
      wall.blood = 10; 

      创建小球
      function createBall(){
      var ball = document.createElement('div');
      ball.id = 'ball';
      wrap.appendChild(ball);


      var timer = null;
      var offValue = ball.offsetLeft;
      ball.move = function (){

      timer = setInterval(function(){
      offValue += 10;
      ball.style.left = offValue+'px';

     判断是否撞墙
      if (offValue >= wall.offsetLeft-ball.offsetWidth) {
      wall.blood--;
      if (wall.blood>=0) {
      blood.childNodes[10-wall.blood-1].style.opacity = 0;
      ball.clear();
    }
      if (wall.blood<=0) {
      wall.remove();
      blood.remove();
     }
    }
    墙没有的时候才会撞到这
      if (offValue >= wrap.offsetWidth-ball.offsetWidth) {
      ball.clear();
     }
     },10);
    }
      ball.clear = function (){
      ball.remove();
      clearInterval(timer);
    }
      ball.move();
    }
      wrap.onclick = function(){
      createBall();
    }
    </script>

      

    总有一天我会到达一个高度,让我看到不一样的风景!
  • 相关阅读:
    centOS6.8 安装Nginx
    Linux 的su 与sudo 的区别,查看所有用户
    查看电脑 8080端口号被哪个应用占用
    配置文件出错 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
    IDEA 代码格式化,快捷键
    学习servlet心得
    nodejs笔记
    Tomcat 7.0.3x 启动慢并且遇到StackOverflowError的异常的解决办法
    国管公积金取房本
    前端准备技术汇总
  • 原文地址:https://www.cnblogs.com/sunshineAimee/p/5988194.html
Copyright © 2020-2023  润新知