js 碰撞 + 重力 运动

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>碰撞+重力运动</title>
    <style>
        #div1
        {
            width:100px;
            height:100px;
            background:red;
            position:absolute;
        }
    </style>

    <script type="text/javascript">
        window.onload = function(){
            var oBtn = document.getElementById("btn");

            oBtn.onclick = function(){
                move();
            }

        }

        //碰撞+重力 运动(计算空气阻力)
        var timer = null;
        //横向初速度
        var speedX = 6;
        //竖向初速度速度
        var speedY = 8;

        function move(){

            clearInterval(timer);

            timer = setInterval(function(){

                var oDiv = document.getElementById("div1");

                //类似重力加速度 : g = 3;
                //竖向加速度:3
                speedY+=3;

                var l = oDiv.offsetLeft + speedX ;
                var t = oDiv.offsetTop + speedY;

                if(t >= document.documentElement.clientHeight-oDiv.offsetHeight)
                {
                    //竖向空气阻力
                    speedY*=-0.8;
                    //横向空气阻力
                    speedX*=0.8;
                    //将top设置为(document.documentElement.clientHeight - oDiv.offsetHeight)px
                    t = document.documentElement.clientHeight - oDiv.offsetHeight;
                }
                else if(t<=0)
                {
                    //竖向空气阻力
                    speedY*=-0.8;
                    //横向空气阻力
                    speedX*=0.8;
                    //将top设置为0px
                    t=0;
                }

                if(l>=document.documentElement.clientWidth-oDiv.offsetWidth)
                {
                    //横向空气阻力
                    speedX*=-0.8;
                    //将left设置为(document.documentElement.clientWidth - oDiv.offsetWidth)px
                    l = document.documentElement.clientWidth - oDiv.offsetWidth;
                }
                else if(l<=0)
                {
                    //横向空气阻力
                    speedX*=-0.8;
                    //将left设置为0px
                    l = 0;
                }

                //将横向速度设置为0
                if(Math.abs(speedX)<1)
                {
                    speedX = 0;
                }
                //将竖向速度设置为0
                if(Math.abs(speedY)<1)
                {
                    speedY = 0;
                }

                //关闭定时器

                //横、竖速度都为空及物体距顶部高度为(可视窗口高度 - 物体高度)
                if(speedX==0 && speedY==0 && t==document.documentElement.clientHeight-oDiv.offsetHeight)
                {
                    clearInterval(timer);
                }
                else
                {
                    oDiv.style.left = l+‘px‘;
                    oDiv.style.top = t +‘px‘;
                }           

            },30);
        }
    </script>
</head>
<body>
   <input type="button" id="btn" value="运动" />
   <div id="div1">
    </div>
    <span style="width:1px;height:300px;background:black;left:300px"></span>
</body>
</html>
时间: 2024-10-08 21:43:38

js 碰撞 + 重力 运动的相关文章

js 拖拽 碰撞 + 重力 运动

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>拖拽 碰撞+重力运动</title&

原生js实现一个DIV的碰撞反弹运动

 原生js实现一个DIV的碰撞反弹运动: 关键在于DIV的边界检测,进而改变运动方向,即可实现碰撞反弹效果. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{margin:0;} div{height:100px;width:100px;back

js实现的运动框架代码实例

js实现的运动框架代码实例:元素的运动效果在大量的场景中都有应用,最典型的一个就是网站的客服系统,一般都会随着滚动条运动,本章节就介绍一下js的一个运动框架实例,希望能够给需要的朋友带来借鉴作用.代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwh

重力运动

模拟重力运动,小球向下运动,速度依次增加,到达最大值时,转变方向,速度转变方向,大小损失,变为80%,当最后速度接近1时,直接让速度为0,位置定在最大值处,关闭定时器,完成重力运动. <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>重力运动</title> <style type="tex

js动画 Css提供的运动 js提供的运动

1.     动画 (1)      Css样式提供了运动 过渡的属性transition  从一种情况到另一种情况叫过渡 Transition:attr  time  linear  delay: Attr 是变化的属性 Time 是花费的时间 Linear 变化的速度 Delay 是延迟 复习background:url() no-repeat 50% 50% red; Background-image Background-repeat Background-position Backgr

js 碰撞运动

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>碰撞运动</title> &l

JS的完美运动框架

function getStyle(obj, name) { if(obj.currentStyle) { return obj.currentStyle[name]; } else { return getComputedStyle(obj, false)[name]; } } //注意:在多物体运动框架中,所有东西都不能公用 !否则出问题,BUG:将必要的变量加到物体的属性中就行.即:属性与运动对象绑定:速度.其他属性值(如透明度等等) function startMove(obj, jso

js入门学习~ 运动应用小例

要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰)  主要是练习多个物体的运动框架~~ ----------------------------------------------------js代码如下 ----------------------------------------------------- //执行函数window.onload = function(){ //声明控制变量 var aDiv = docu

js实现缓冲运动,和匀速运动有点不相同

缓冲运动和匀速运动有点不同,看图可以知道缓冲运动速度是越来越慢的. 1 <style> 2 *{ 3 padding:0; 4 margin:10px 0; 5 } 6 #div1{ 7 height:100px; 8 width:100px; 9 background:green; 10 float:left; 11 position:relative; 12 left:1000px; 13 } 14 #div2{ 15 border-left:1px solid black; 16 pos