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入门学习~ 运动应用小例
要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰) 主要是练习多个物体的运动框架~~ --------------------- ...
随机推荐
- ubuntu iftop工具安装和参数
安装iftop有很多依赖关系: sudo apt-get install flex bison wget http://www.tcpdump.org/release/libpcap-1.5.3.ta ...
- visual studio 和 sql server 的激活密钥序列号
VS2010: YCFHQ-9DWCY-DKV88-T2TMH-G7BHP VS2013: BWG7X-J98B3-W34RT-33B3R-JVYW9 VS2015: 专业版:HMGNV-WCYXV- ...
- Android x86 下运行纯ARM版APP
Android x86 默认不带houdini,运行纯ARM版会提示: 很抱歉,”xxxx”已停止运行 设置->应用兼容性->打开 终端模拟器 $ su# enable_nativebri ...
- 聊聊我怎么系统学习Linux技能并快速提高的
随着电子信息科技时代的发展,学会使用计算机在我们的生活中成为了必不可少的一项技能.而作为计算机中的三大操作系统之一的Linux更是饱受计算机爱好者们的喜爱.今天我们就来和大家一起聊一聊Linux操作系 ...
- luogu3305/bzoj3130 费用流 (二分答案+dinic)
Bob肯定想挑一个流量最大的边,然后把所有的费用都加给它呗 那Alice就让流量最大的边尽量小呗 那就二分一下答案再dinic呗 #include<bits/stdc++.h> #defi ...
- matplotlib fill和fill_between
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 5 * np.pi, 1000) y1 = np.sin(x ...
- CAN总线疑惑与解答
1 CAN总线2根数据线是怎么表示数据信息1和0的? Can总线采用差分数据表示方法,平时2个数据线为2.5V,表示隐性(1).当用数据0(显性)需要发送时1跟数据线上升到3.5V另一个下降到1 ...
- Power BI 实现实时更新Streaming Dataset
一.在PowerBI portal端需要准备的操作: 1. https://app.powerbi.cn 登陆,点击左侧My Workspace,你需要有一个账号 2. 选入Datasets,点击页面 ...
- eclipse index 不工作 F3 不能找到头文件
To add paths containing code to parse, follow these steps :1. Right click on the project2. Select Pr ...
- 试着用c写了一个多线程的同步
在Java中写多线程相关的程序简单很多,在多线程中需要同步的时候,使用synchronized就行了. 最近学习c的多线程与同步,感觉实现起来,要写的代码比较多一些,这也许是因为java封装的比较好吧 ...