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 上下滚动展示模仿Marquee机制
Dec 20 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
Apr 18 Javascript
js实现select组件的选择输入过滤代码
Oct 14 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
Mar 26 Javascript
node.js+express制作网页计算器
Jan 17 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
Jun 23 Javascript
js编写的treeview使用方法
Nov 11 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
Jul 25 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
Dec 08 Javascript
Vue resource三种请求格式和万能测试地址
Sep 26 Javascript
JavaScript 中的六种循环方法
Jan 06 Javascript
JS相册图片抖动放大展示效果的示例代码
Jan 29 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基础学习之流程控制的实现分析
2013/04/28 PHP
深入php多态的实现详解
2013/06/09 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
Python实现中一次读取多个值的方法
2018/04/22 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
通过实例解析Python调用json模块
2019/12/11 Python
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
AC Lens:购买隐形眼镜
2017/02/26 全球购物
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
写好自荐信的几个要点
2013/12/26 职场文书
保安拾金不昧表扬信
2014/01/15 职场文书
社区十八大感言
2014/01/19 职场文书
欢迎家长标语
2014/10/08 职场文书
瘦西湖导游词
2015/02/03 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
2016年寒假见闻
2015/10/10 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript