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在IE和FireFox中的不同表现简析
Dec 03 Javascript
载入jQuery库的最佳方法详细说明及实现代码
Dec 28 Javascript
JavaScript 上万关键字瞬间匹配实现代码
Jul 07 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
Dec 19 Javascript
利用jquery写的左右轮播图特效
Feb 12 Javascript
Jquery实现的角色左右选择特效
May 21 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
Mar 02 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
Dec 03 Javascript
使用vue开发移动端管理后台的注意事项
Mar 07 Javascript
Vue表单之v-model绑定下拉列表功能
May 14 Javascript
Vue学习之常用指令实例详解
Jan 06 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
Feb 28 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
在线增减.htpasswd内的用户
2006/10/09 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
讲解Python中的标识运算符
2015/05/14 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Python Flask基础教程示例代码
2018/02/07 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
运动会宣传口号
2014/06/09 职场文书
初中生毕业评语
2014/12/29 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
六一活动主持词
2015/06/30 职场文书
护士旷工检讨书
2015/08/15 职场文书
服务器nginx权限被拒绝解决案例
2022/09/23 Servers