js 碰撞 + 重力 运动
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>碰撞+重力运动</title>
- <style>
- #div1
- {
- width:100px;
- height:100px;
- background:red;
- position:absolute;
- }
- </style>
- <script type="text/javascript">
- window.onload = function(){
- var oBtn = document.getElementById("btn");
- oBtn.onclick = function(){
- move();
- }
- }
- //碰撞+重力 运动(计算空气阻力)
- var timer = null;
- //横向初速度
- var speedX = 6;
- //竖向初速度速度
- var speedY = 8;
- function move(){
- clearInterval(timer);
- timer = setInterval(function(){
- var oDiv = document.getElementById("div1");
- //类似重力加速度 : g = 3;
- //竖向加速度:3
- speedY+=3;
- var l = oDiv.offsetLeft + speedX ;
- var t = oDiv.offsetTop + speedY;
- if(t >= document.documentElement.clientHeight-oDiv.offsetHeight)
- {
- //竖向空气阻力
- speedY*=-0.8;
- //横向空气阻力
- speedX*=0.8;
- //将top设置为(document.documentElement.clientHeight - oDiv.offsetHeight)px
- t = document.documentElement.clientHeight - oDiv.offsetHeight;
- }
- else if(t<=0)
- {
- //竖向空气阻力
- speedY*=-0.8;
- //横向空气阻力
- speedX*=0.8;
- //将top设置为0px
- t=0;
- }
- if(l>=document.documentElement.clientWidth-oDiv.offsetWidth)
- {
- //横向空气阻力
- speedX*=-0.8;
- //将left设置为(document.documentElement.clientWidth - oDiv.offsetWidth)px
- l = document.documentElement.clientWidth - oDiv.offsetWidth;
- }
- else if(l<=0)
- {
- //横向空气阻力
- speedX*=-0.8;
- //将left设置为0px
- l = 0;
- }
- //将横向速度设置为0
- if(Math.abs(speedX)<1)
- {
- speedX = 0;
- }
- //将竖向速度设置为0
- if(Math.abs(speedY)<1)
- {
- speedY = 0;
- }
- //关闭定时器
- //横、竖速度都为空及物体距顶部高度为(可视窗口高度 - 物体高度)
- if(speedX==0 && speedY==0 && t==document.documentElement.clientHeight-oDiv.offsetHeight)
- {
- clearInterval(timer);
- }
- else
- {
- oDiv.style.left = l+'px';
- oDiv.style.top = t +'px';
- }
- },30);
- }
- </script>
- </head>
- <body>
- <input type="button" id="btn" value="运动" />
- <div id="div1">
- </div>
- <span style="width:1px;height:300px;background:black;left:300px"></span>
- </body>
- </html>
js 碰撞 + 重力 运动的更多相关文章
- js 拖拽 碰撞 + 重力 运动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 原生js实现一个DIV的碰撞反弹运动,并且添加重力效果
继上一篇... 原生js实现一个DIV的碰撞反弹运动,并且添加重力效果 关键在于边界检测,以及乘以的系数问题,实现代码并不难,如下: <!DOCTYPE html> <html la ...
- 原生js实现一个DIV的碰撞反弹运动
原生js实现一个DIV的碰撞反弹运动: 关键在于DIV的边界检测,进而改变运动方向,即可实现碰撞反弹效果. <!DOCTYPE html> <html lang="en& ...
- [Js]碰撞运动
描述:撞到目标点弹回来(速度反转) 一.无重力的漂浮div var div1=document.getElementById("div1"); var iSpeedX=6; var ...
- 单Js 的重力游戏开发
最近在用看cocos的时候萌生的想法,单纯js实现重力原理.然后就做了一个这样的小游戏.姑且命名为<超级玛丽>! 因为之前有人要我做超级玛丽.哈哈哈哈哈哈!这也算完成任务了吧. 先说一下原 ...
- js动画 Css提供的运动 js提供的运动
1. 动画 (1) Css样式提供了运动 过渡的属性transition 从一种情况到另一种情况叫过渡 Transition:attr time linear delay: ...
- JS实现缓存运动
JS ...
- JS学习-基础运动
多物体运动 多个物体用同一个函数时,函数里定义的定时器应该要每个物体对应一个定时器名称,不然会导致未完成运动就被关闭了,因为定时器名称一样,而开启定时器前会清除一下. obj.timer 多值同时运动 ...
- js入门学习~ 运动应用小例
要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰) 主要是练习多个物体的运动框架~~ --------------------- ...
随机推荐
- 借鉴 学习 DELPHI 通用函数 哈哈
[转]关于Delphi通用涵数 http://m.blog.csdn.net/blog/dragonjiang5460/1196927 2006-9-8阅读2016 评论0 DELPHI程序注册码设计 ...
- rabbitmq使用报错总结
最近公司重构服务器架构,需要用到rabbitmq,在公司搞了一个下午还是连接不上,后来细看了英文说明,测试连接成功,得出如下报错几点. 我用的安装包:otp_win64_21.3.exe(erlang ...
- BZOJ3152[Ctsc2013]组合子逻辑——堆+贪心
题目链接: BZOJ3152 题目大意: 一开始有一个括号包含[1,n],你需要加一些括号,使得每个括号(包括一开始的)所包含的元素个数要<=这个括号左端点那个数的大小,当一个括号包含另一个括号 ...
- BZOJ2557[Poi2011]Programming Contest——匈牙利算法+模拟费用流
题目描述 Bartie and his friends compete in the Team Programming Contest. There are n contestants on each ...
- day22 collection 模块 (顺便对比queue也学习了一下队列)
collection 定义命名元祖,让元祖的每个元素可以通过类似对象属性的方法用".属性"及其方便的取值. 定义可前后拿取值且可迭代的双端队列 定义有顺序的字典 定义有默认值的字典 ...
- day9 笔记
集合 去重 无序 元素不可变类型 可hash 命令 set() 创建可变集合 frozenset() 创建不可变集合 .add() 添加元素,只能放单个值 .update() 添加元素,可以更新多个值 ...
- 单片机如何产生PWM信号
用89C52产生控制二相步进电机的程序,用PWM信号控制步进电机 用普通I/O口采用软件定时器中断可以模拟PWM输出 /*采用6MHz晶振,在P1.0脚上输出周期为2.5s,占空比为20%的脉冲信号* ...
- 【洛谷P3586】LOG
题目大意:维护一个集合,支持单点修改.查询小于 X 的数的个数.查询小于 X 的数的和. 题解:学习到了动态开点线段树.对于一棵未经离散化的权值线段树来说,对于静态开点来说,过大的值域会导致不能承受的 ...
- (转)Spring文件上传,包括一次选中多个文件
背景: http://www.cnblogs.com/lixuwu/p/8495275.html已经实现了单文件的上传和下载,多文件的上传是另一种情景,这里记录下来 实现过程 先说前台. 运行以后就是 ...
- 盘点 php 里面那些冷门又实用的小技巧
1.实用某个字段索引二维数组 取出一个数组的一个字段的值的数组,我们可以使用 array_column, 这个方法还有另外一个用法,如 array_column($array, null, 'key' ...