javascript拖拽效果。里面还增加了弹性运动、自由落体、碰撞 运动(转)

<script type="text/javascript">
window.onload = function() {
var oBox = document.getElementById('box');
var oDrag = document.getElementById('drag');
var iW = oBox.offsetWidth,
    iH = oBox.offsetHeight,
    clientW = document.documentElement.clientWidth,
    clientH = document.documentElement.clientHeight,
    scrollY = document.documentElement.scrollTop || document.body.scrollTop,
    iSpeedX = 0,
    iSpeedY = 0,
    timer = null;
function move(){
    clearInterval(timer);
    timer = setInterval(function(){
        iSpeedY += 5;
        var l = oBox.offsetLeft + iSpeedX;
        var t = oBox.offsetTop + iSpeedY;
        if(t > clientH-iH){
            t = clientH - iH + scrollY;
            iSpeedY *= -1;
            iSpeedY *= .7;
            iSpeedX *= .7;
        }else if(t <0 ){
            t = 0;
            iSpeedY *= -1;
            iSpeedY *= .7;
        }
        if(l > clientW-iW){
            l = clientW - iW;
            iSpeedX *= -1;
            iSpeedX *= .7;
        }else if(l < 0){
            l = 0;
            iSpeedX *= -1;
            iSpeedX *= .7;
        }
        oBox.style.left = l + 'px';
        oBox.style.top = t + 'px';
    }, 30);
}
oDrag.onmousedown = function(ev){
    var e = ev || window.event,
        preX = e.clientX,
        preY = e.clientY,
        x = preX - oBox.offsetLeft,
        y = preY - oBox.offsetTop;
    clearInterval(timer);
    if(oBox.setCapture){ oBox.setCapture(); }
            
    document.onmousemove = function(ev){
        var e = ev || window.event,
            left = e.clientX - x,
            top = e.clientY - y;
            if(left < 0){
                left = 0;
            }else if(left > clientW - iW){
                left = clientW - iW;
            }
            if(top < 0){
                top = 0;
            }
                    
            oBox.style.left = left + 'px';
            oBox.style.top = top + 'px';
            iSpeedX = e.clientX - preX;
            iSpeedY = e.clientY - preY;
            preX = e.clientX;
            preY = e.clientY;
    }
    document.onmouseup = function(){
                
        document.onmousemove = null;
        document.onmouseup = null;
                
        if(oBox.releaseCapture) { oBox.releaseCapture(); }
                
        move();
    }
    return false;
}
}
</script>
 

posted on 2015-10-28 09:55  土豆番茄  阅读(121)  评论(0编辑  收藏  举报

导航