描述:撞到目标点弹回来(速度反转)

一、无重力的漂浮div

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

var iSpeedX=6;

var iSpeedY=8;

setInterval(function(){

var l=div1.offsetLeft+iSpeedX;

var t=div1.offsetTop+iSpeedY;

if(t>=document.documentElement.clientHeight-div1.offsetHeight){

iSpeedY*=-1;          //速度反向

t=document.documentElement.clientHeight-div1.offsetHeight;    //超出下边界时,把它拉回到下边界,不然右边滚动条会闪动出现一下

}

else if(t<=0){

iSpeedY*=-1;

t=0;

}

if(l>=document.documentElement.clientWidth-div1.offsetWidth){

iSpeedX*=-1;

l=document.documentElement.clientWidth-div1.offsetWidthl;

}

else if(l<=0){

iSpeedX*=-1;

l=0;

}

div1.style.left=l+'px';

div1.style.top=t+'px';

},30);

二、碰撞+重力

所谓重力就是Y轴的速度不断增加

setInterval(function(){

iSpeedY+=3;

var l=div1.offsetLeft+iSpeedX;

var t=div1.offsetTop+iSpeedY;

if(t>=document.documentElement.clientHeight-div1.offsetHeight){

iSpeedY*=-0.8;

iSpeedX*=0.8;          //横向速度也要变慢,否则碰到地面时会停不下来

t=document.documentElement.clientHeight-div1.offsetHeight;

}

else if(t<=0){

iSpeedY*=-1;

iSpeedX*=0.8;

t=0;

}

if(l>=document.documentElement.clientWidth-div1.offsetWidth){

iSpeedX*=-0.8;

l=document.documentElement.clientWidth-div1.offsetWidthl;

}

else if(l<=0){

iSpeedX*=-0.8;

l=0;

}

if(Math.abs(iSpeedX)<1){       //解决小数的问题,因为假如速度是小数,正的没问题,100(iSpeed=0.5)-->100.5-->100,负的100(iSpeed=-0.5)--->99.5-->99,可能会出现

x轴反向时滑行

iSpeedX=0;

}

if(Math.abs(iSpeedY)<1){

iSpeedY=0;

}

div1.style.left=l+'px';

div1.style.top=t+'px';

},30);

三、碰撞+重力+拖拽

window.onload=function ()
{
    var oDiv=document.getElementById('div1');  
    var lastX=0;
    var lastY=0;  
    oDiv.onmousedown=function (ev)
    {
        var oEvent=ev||event;     
        var disX=oEvent.clientX-oDiv.offsetLeft;
        var disY=oEvent.clientY-oDiv.offsetTop;    
        document.onmousemove=function (ev)
        {
            var oEvent=ev||event;        
            var l=oEvent.clientX-disX;
            var t=oEvent.clientY-disY;      
            oDiv.style.left=l+'px';
            oDiv.style.top=t+'px';       
            iSpeedX=l-lastX;            //拖拽结束时的速度
            iSpeedY=t-lastY;          
            lastX=l;          //更新上一个点的位置
            lastY=t;        
        };      
        document.onmouseup=function ()
        {
            document.onmousemove=null;
            document.onmouseup=null;         
            startMove();   //拖拽结束时执行
        };       
        clearInterval(timer);
    };
};

var timer=null;
var iSpeedX=0;
var iSpeedY=0;
function startMove()
{
    clearInterval(timer);  
    timer=setInterval(function (){
        var oDiv=document.getElementById('div1');     
        iSpeedY+=3;      
        var l=oDiv.offsetLeft+iSpeedX;
        var t=oDiv.offsetTop+iSpeedY;      
        if(t>=document.documentElement.clientHeight-oDiv.offsetHeight)
        {
            iSpeedY*=-0.8;
            iSpeedX*=0.8;
            t=document.documentElement.clientHeight-oDiv.offsetHeight;
        }
        else if(t<=0)
        {
            iSpeedY*=-1;
            iSpeedX*=0.8;
            t=0;
        }     
        if(l>=document.documentElement.clientWidth-oDiv.offsetWidth)
        {
            iSpeedX*=-0.8;
            l=document.documentElement.clientWidth-oDiv.offsetWidth;
        }
        else if(l<=0)
        {
            iSpeedX*=-0.8;
            l=0;
        }       
        if(Math.abs(iSpeedX)<1)
        {
            iSpeedX=0;
        }       
        if(Math.abs(iSpeedY)<1)
        {
            iSpeedY=0;
        }       
        if(iSpeedX==0 && iSpeedY==0 && t==document.documentElement.clientHeight-oDiv.offsetHeight)
        {
            clearInterval(timer);
        }
        else
        {
            oDiv.style.left=l+'px';
            oDiv.style.top=t+'px';
        }       
        document.title=iSpeedX;
    }, 30);
}

[Js]碰撞运动的更多相关文章

  1. JS运动基础(四) 碰撞运动

    碰撞运动撞到目标点,速度反转无重力的漂浮Div速度反转滚动条闪烁的问题过界后直接拉回来 加入重力反转速度的同时,减小速度纵向碰撞,横向速度也减小横向速度小数问题(负数) <!DOCTYPE HT ...

  2. javascript运动系列第九篇——碰撞运动

    × 目录 [1]碰撞检测 [2]无损碰撞 [3]有损碰撞 前面的话 碰撞可以分为碰壁和互碰两种形式,上篇介绍了碰壁运动,本文将从浅入深地介绍碰撞运动的互碰形式 碰撞检测 对于互碰形式的碰撞运动来说,首 ...

  3. HTML5 Canvas彩色小球碰撞运动特效

    脚本简介 HTML5 Canvas彩色小球碰撞运动特效是一款基于canvas加面向对象制作的运动小球动画特效.   效果展示 http://hovertree.com/texiao/html5/39/ ...

  4. JS缓冲运动案例:右侧居中悬浮窗

    JS缓冲运动案例:右侧居中悬浮窗 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta cha ...

  5. JS缓冲运动案例:右下角悬浮窗

    JS缓冲运动案例:右下角悬浮窗 红色区块模拟页面的右下角浮窗,在页面进行滚动时,浮窗做缓冲运动,最终在页面右下角停留. <!DOCTYPE html> <html lang=&quo ...

  6. js 碰撞 + 重力 运动

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

  7. JS完美运动框架

    这套框架实现了多物体,任意值,链式运动,多值运动,基本满足常见的需求. /* 功能:完美运动框架,可以实现多物体,任意值,链式运动,多值运动 版本:V1.0 兼容性:Chrome,FF,IE8+ (o ...

  8. js缓冲运动

    缓冲运动 现象:逐渐变慢,最后停止 原理:距离越远,速度越大 速度的计算方式: 1,速度由距离决定 2,速度=(目标值-当前值)/缩放系数 说明:速度为正负数时,也决定了物体移动的方向 示例:div缓 ...

  9. 原生js小球运动

    //html代码 <input type="button" value="小球运动" /> <div></div> //js ...

随机推荐

  1. tomcat PermGen space

    centos: 修改Tomcat中的catalina.sh文件.--用了这个 在catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下 # vim TOMCAT_ ...

  2. chrome离线安装包_下载

    ZC: 如何下载的文章 参考:“https://www.tekrevue.com/tip/download-chrome-offline-installer/” 1. f/q 2.下载网址: 2.1. ...

  3. poj3667【线段树】/【类似权值线段树写法】

    题意:n个空房间.两种操作:1.选择最小的连续D个房间入住,并输出这连续D个房间的最小标号.2.将某个区间内的房间全部退房. #include <cstdio> #include < ...

  4. 让你分分钟读懂CPU架构及芯片厂商

    CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分 不同类型CPU的重要标示.目前市面上的CPU指令集分类主要分有两大阵营,一个是intel.AMD为首的复杂指令集CPU ...

  5. 通过注解(annotation)配置Bean

    Spring能够在classpath下自动扫描,侦测和实例化具有特定注解的组件,这在Spring中成为组件扫描(Component scanning). 特定组件的注解包括: @Component:基 ...

  6. Android控件之AutoCompleteTextView(自动匹配输入的内容)

    一.功能 动态匹配输入的内容,如百度搜索引擎当输入文本时,可以根据内容显示匹配的热门信息 二.独特属性 android:completionThreshold = "2"    — ...

  7. python操作mongodb之八地理索引空间数据

    from pymongo import MongoClient, GEO2D #使用geo_example库 db = MongoClient('192.168.30.252',27017).geo_ ...

  8. MEAN-全栈javascript开发框架

    引言 使用JavaScript能够完整迅速做出Web应用程序,目前一套工具包括MongoDB.ExpressJS,AngularJS和Node.js越来越受到欢迎,其开发的灵活性和易用性加快开发效率, ...

  9. Java软件工程师全栈技能

    1.前端基础技能,掌握html.js.css,会用jquery.bootstrap. 2.前端技能升级,会用echart.BMap等等. 3.前端高级技能,熟练使用angularjs等等. 4.服务端 ...

  10. Windows CPU占用率过高

    今天调试程序,发现Windows7的CPU占用率一直为25%左右,如下图所示.四核25%,换成单核那就是100%的占用率了! 上图进入"进程"页面,单击"CPU" ...