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 相关文章推荐
一些常用的JS功能函数代码
Jun 23 Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
Apr 30 Javascript
用jquery与css打造个性化的单选框和复选框
Oct 20 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
JavaScript中的Math.E属性使用详解
Jun 12 Javascript
js实现TAB切换对应不同颜色的代码
Aug 31 Javascript
AngularJS基础 ng-paste 指令简单示例
Aug 02 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
Aug 24 Javascript
Vue的事件响应式进度条组件实例详解
Feb 04 Javascript
vue实现word,pdf文件的导出功能
Jul 31 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
Aug 12 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
Aug 20 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 数组的指针操作实现代码
2011/02/08 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
php生成gif动画的方法
2015/11/05 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
php微信开发之百度天气预报
2016/11/18 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
php文件包含的几种方式总结
2019/09/19 PHP
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
用python实现面向对像的ASP程序实例
2014/11/10 Python
Python复制目录结构脚本代码分享
2015/03/06 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
python基于递归解决背包问题详解
2019/07/03 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
Python 中如何写注释
2020/08/28 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
用python对excel查重
2020/12/07 Python
详解Python中的Lock和Rlock
2021/01/26 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
军训拉歌口号
2014/06/13 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
个人工作年终总结
2015/03/09 职场文书
民事起诉状范文
2015/05/19 职场文书
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android