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 相关文章推荐
利用谷歌地图API获取点与点的距离的js代码
Oct 11 Javascript
浅析JQuery中的html(),text(),val()区别
Sep 01 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
Dec 16 Javascript
jQuery中prepend()方法用法实例
Dec 25 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
Mar 18 Javascript
Javascript连接Access数据库完整实例
Aug 03 Javascript
基于jquery实现的仿优酷图片轮播特效代码
Jan 13 Javascript
canvas实现弧形可拖动进度条效果
May 11 Javascript
jQuery返回定位插件详解
May 15 jQuery
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
Jul 09 Javascript
微信小程序去除左上角返回键的实现方法
Mar 06 Javascript
vue 子组件修改data或调用操作
Aug 07 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
thinkphp如何获取客户端IP
2015/11/03 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
jquery实现的放大镜效果示例
2020/02/24 jQuery
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
flask 实现token机制的示例代码
2019/11/07 Python
荷兰网上鞋店:Ziengs.nl
2017/01/02 全球购物
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
捷科时代的软件测试笔试题
2015/11/09 面试题
老师推荐信
2013/10/28 职场文书
地质工程专业毕业生求职信
2014/08/08 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
公司行政管理制度范本
2015/08/05 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书