js运动实例-拖拽碰撞

实现过程:
1.实现拖拽
2.计算速度
3.实现碰撞

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #div1{
                width: 100px;
                height: 100px;
                background: olive;
                position: absolute;
                cursor: move;
            }
        </style>
        <script type="text/javascript">
            window.onload=function(){
                var oDiv=document.getElementById("div1");

                var disX=0;
                var disY=0;

                var prevX=0;
                var prevY=0;
                var iSpeedX=0;
                var iSpeedY=0;

                var iTimer=null;

                oDiv.onmousedown=function(ev){
                    var ev=ev || window.event;

                    prevX=ev.clientX;
                    prevY=ev.clientY;

                    disX=ev.clientX-oDiv.offsetLeft;
                    disY=ev.clientY-oDiv.offsetTop;

                    document.onmousemove=function(ev){
                        var ev=ev || window.event;

                        oDiv.style.left=ev.clientX-disX+'px';
                        oDiv.style.top=ev.clientY-disY+'px';

                        iSpeedX=ev.clientX-prevX;
                        iSpeedY=ev.clientY-prevY;

                        prevX=ev.clientX;
                        prevY=ev.clientY;
                    }

                    document.onmouseup=function(){
                        document.onmousemove=null;
                        document.onmouseup=null;

                        startMove();
                    }
                    return false;

                    function startMove(){
                        clearInterval(iTimer);
                        iTimer=setInterval(function(){

                            iSpeedY+=3;

                            var L=oDiv.offsetLeft+iSpeedX;
                            var T=oDiv.offsetTop+iSpeedY;

                            if (L>document.documentElement.clientWidth-oDiv.offsetWidth) {
                                L=document.documentElement.clientWidth-oDiv.offsetWidth;
                                iSpeedX*=-1;
                                iSpeedX*=0.75;
                            }else if (L<0) {
                                L=0;
                                iSpeedX*=-1
                                iSpeedX*=0.75;
                            }

                            if (T>document.documentElement.clientHeight-oDiv.offsetHeight) {
                                T=document.documentElement.clientHeight-oDiv.offsetHeight;
                                iSpeedY*=-1;
                                iSpeedY*=0.75;
                                iSpeedX*=0.75;
                            }else if (T<0) {
                                T=0;
                                iSpeedY*=-1;
                                iSpeedY*=0.75;
                            }

                            oDiv.style.left=L+'px';
                            oDiv.style.top=T+'px';


                        },30)
                    }
                }

            }
        </script>
    </head>
    <body>
        <div id="div1"></div>
    </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值