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 相关文章推荐
javascript网页关闭时提醒效果脚本
Oct 22 Javascript
轻轻松松学JS调试(不下载任何工具)
Apr 14 Javascript
基于jquery的跨域调用文件
Nov 19 Javascript
JavaScript 学习历程和心得分享
Dec 12 Javascript
jquery delay()介绍及使用指南
Sep 02 Javascript
jQuery实现固定在网页顶部的菜单效果代码
Sep 02 Javascript
11种ASP连接数据库的方法
Sep 18 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
Nov 22 Javascript
Bootstrap CSS布局之按钮
Dec 17 Javascript
jQuery图片轮播功能实例代码
Jan 29 Javascript
React中使用collections时key的重要性详解
Aug 07 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
Jun 10 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
使用网络地址转换实现多服务器负载均衡
2006/10/09 PHP
php $_ENV为空的原因分析
2009/06/01 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
jquery 手势密码插件
2017/03/17 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
Python的gevent框架的入门教程
2015/04/29 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
Python之修改图片像素值的方法
2019/07/03 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
波兰购物网站:MALL.PL
2019/05/01 全球购物
银行员工职业规划范文
2014/01/21 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
商学院大学生求职的自我评价
2014/03/12 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
谢师宴答谢词
2015/01/05 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
交通安全教育心得体会
2016/01/15 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python