JS实现的碰撞检测与周期移动完整示例


Posted in Javascript onSeptember 02, 2019

本文实例讲述了JS实现的碰撞检测与周期移动。分享给大家供大家参考,具体如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style type="text/css">
    #main {width:525px;
          height:300px;
          border:3px double black;
}
    #t {font-size:30px;
        color:blue;
        width:120px;
        height:35px;
        position:absolute;
        left:1;
        top:1;
    }
</style>
</head>
<body>
<div id="main" onMouseDown="MovePos();" onMouseUp="BeginMove();">
    <div id="t" >移动文本</div>
</div>
<script type="text/javascript">
    var tID;
    var iDeltaX = 1,iDeltaY = 1,iTmp;
    var obj = document.getElementById("t");
    var x = obj.style.left;
    var y = obj.style.top;
    var TOPX = 420,BOUNDX =1,TOPY =270,BOUNDY=1;
    function MovePos()
    {
        clearTimeout(tID);//每次运动前都要清除上一次的定时器,这个是关键!!
        x=parseInt(x+iDeltaX);
        y=parseInt(y+iDeltaY);
        //注意!x=x+1;和x=x+iDeltaX;都不行!
        //核心:反弹碰撞算法
        if(x>TOPX || x<BOUNDX || y>TOPY || y<BOUNDY)
        {
            iTmp = iDeltaX;
            iDeltaX=-iDeltaY;
            iDeltaY=iTmp;
        }
        //文本没移动10步后(每次移动步长1像素),文本颜色就变为红色,再移动10步后,文本颜色又变成蓝色,并持续这种切换方式
        if(x%10==0)
        {
            if(x%20==0){
                obj.style.color = "blue";
            }else{
                    obj.style.color = "red";
            }
        }
        obj.style.left = x+"px";
        obj.style.top = y+"px";
        //注意!obj.setAttribute("left",x);obj.setAttribute("top",y);是不行的!
        //设置定时器
        tID=setTimeout("MovePos()",10);
    }
    function BeginMove(){
        clearTimeout(tID);
    }
    //当鼠标点击在div(id="main")内按下时,运动开始,并且在鼠标弹起时运动结束,所以,要在div(id="main")内按下鼠标单击,然后在div(id="main")外松开,鼠标弹起
    //其实这个不怎么完美,因为div(id="main")的位置还没调好,不过,反弹效果成功了
</script>
</body>
</html>

运行效果:

JS实现的碰撞检测与周期移动完整示例

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
IE JS无提示关闭窗口不提示的方法
Apr 29 Javascript
javascript 传统事件模型构造的事件监听器实现代码
May 31 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
Nov 19 Javascript
js日历功能对象
Jan 12 Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 Javascript
JavaScript面对国际化编程时的一些建议
Jun 24 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
Nov 18 Javascript
手机端转换rem适应
Apr 01 Javascript
Javascript中的getter和setter初识
Aug 17 Javascript
微信小程序仿朋友圈发布动态功能
Jul 15 Javascript
微信小程序实现的picker多级联动功能示例
May 23 Javascript
详解javascript void(0)
Jul 13 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
Sep 02 #Javascript
layui数据表格跨行自动合并的例子
Sep 02 #Javascript
Vue form表单动态添加组件实战案例
Sep 02 #Javascript
小程序和web画三角形实现解析
Sep 02 #Javascript
vue-cli随机生成port源码的方法
Sep 02 #Javascript
微信小程序 云开发模糊查询实现解析
Sep 02 #Javascript
layui 数据表格 点击分页按钮 监听事件的实例
Sep 02 #Javascript
You might like
编写PHP的安全策略
2006/10/09 PHP
Yii学习总结之安装配置
2015/02/22 PHP
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
在centos7中分布式部署pyspider
2017/05/03 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
windows下python安装pip图文教程
2018/05/25 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
研究生自荐信
2013/10/09 职场文书
英语教师岗位职责
2014/03/16 职场文书
开业庆典主持词
2014/03/21 职场文书
食品安全工作方案
2014/05/07 职场文书
公司活动总结范文
2014/07/01 职场文书
生活部的活动方案
2014/08/19 职场文书
师德师风自查总结
2014/10/14 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
成本会计岗位职责
2015/02/03 职场文书
网络营销实训总结
2015/08/03 职场文书
严以律己学习心得体会
2016/01/13 职场文书
2016年少先队活动总结
2016/04/06 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle