zoukankan      html  css  js  c++  java
  • js碰撞

    两个div从不同方向、用不等的速度移动。

    html:

    <div id="box1" style=" 100px;height: 100px;background: darkolivegreen;position: absolute;left: 50px;"></div>
    <div id="box2" style=" 100px;height: 100px;background: seagreen;position: absolute;left: 800px;top: 150px;"></div>

    javascript:

     var lastTime = Date.now();
        var boxSpeed1 = 100;
        var boxSpeed2 = 150;
        var box1 = document.getElementById('box1');
        var box2 = document.getElementById('box2');
    
        function main(){
            var nowTime = Date.now();
            var dt = (nowTime - lastTime) / 1000;
            box1.style.left = parseInt(box1.style.left) + boxSpeed1 * dt + 'px';
            box2.style.left = parseInt(box2.style.left) - boxSpeed2 * dt + 'px';
            lastTime = nowTime;
            setTimeout(main,1000/60);
        }
        main();

    两个div从不同方向、用不等的速度移动,判断两个div碰撞,这经常用在游戏敌机与本机碰撞爆咋或者子弹打到敌机爆炸。

     html:

    <div id="box1" style=" 100px;height: 100px;background: darkolivegreen;position: absolute;left: 50px;"></div>
    <div id="box2" style=" 100px;height: 100px;background: seagreen;position: absolute;left: 800px;"></div>

    javascript:

     var lastTime = Date.now();
        var boxSpeed1 = 100;   //从左边走的div速度
        var boxSpeed2 = 150;   //从右边走的div速度
        var box1 = document.getElementById('box1');
        var box2 = document.getElementById('box2');
    
        function main(){
            var nowTime = Date.now();
            var dt = (nowTime - lastTime) / 1000;
    
            var recA = getDemosion(box1);
            var recB = getDemosion(box2);
    
            var flag =  cili(recA,recB);
            if(flag){
                alert('爆炸');
                return;
            }
            else{
                box1.style.left = parseInt(box1.style.left) + boxSpeed1 * dt + 'px';
                box2.style.left = parseInt(box2.style.left) - boxSpeed2 * dt + 'px';
            }
            lastTime = nowTime;
            setTimeout(main,1000/60);
        }
        main();
    
    
    
        function getDemosion(element){
            return {
                x:element.offsetLeft,
                y:element.offsetTop,
    
                element.offsetWidth,
                height:element.offsetHeight
            }
        }
    
        function cili(rectA,rectB){
            return !(
                    rectA.x + rectA.width < rectB.x  ||
                    rectB.x + rectB.width < rectB.x  ||
                    rectA.y + rectA.height < rectA.y ||
                    rectB.y + rectB.height < rectB.y
                    )
    
        }

     

  • 相关阅读:
    软件测试——一点看法
    软件测试——注意事项
    软件测试——Peer Review
    软件测试——白盒测试
    软件测试——闰年检测程序及异常问题解决
    JS动态,有选择性的改变div颜色
    软件测试——EditBox等价类划分扩展
    软件测试——EditBox等价类划分
    初窥软件测试
    开博第一篇
  • 原文地址:https://www.cnblogs.com/5huihui/p/4122132.html
Copyright © 2011-2022 走看看