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入门学习~ 运动应用小例
要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰) 主要是练习多个物体的运动框架~~ --------------------- ...
随机推荐
- Jest & React & Enzyme
Jest & React & Enzyme auto units testing https://reactjs.org/docs/test-utils.html https://gi ...
- Guava的RateLimiter在单机限流中的正确用法
错误使用 在实现限流时,网上的各种文章基本都会提到Guava的RateLimiter,用于实现单机的限流,并给出类似的代码: public void method() { RateLimiter ra ...
- 深度学习中 Batch Normalization
深度学习中 Batch Normalization为什么效果好?(知乎) https://www.zhihu.com/question/38102762
- LAMP平台部署
LAMP平台的概述 LAMP环境脚本部署:https://github.com/spdir/ShellScripts/tree/master/lamp LAMP的介绍:百度百科 LAMP平台的构成组件 ...
- 自学Python1.3-centos内python3并与python2共存
自学Python之路 自学Python1.3-centos内python3并与python2共存 1. 查看是否已经安装Python 测试机系统CentOS 7 默认安装了python2.7, 使用 ...
- 【BZOJ4712】洪水(动态dp)
[BZOJ4712]洪水(动态dp) 题面 BZOJ 然而是权限题QwQ,所以粘过来算了. Description 小A走到一个山脚下,准备给自己造一个小屋.这时候,小A的朋友(op,又叫管理员)打开 ...
- [luogu3258][JLOI2014]松鼠的新家
题解 我们就在\([a_i,a_{i+1}]\)的路径上都\(+1\),然后单点查询就可以了. ac代码(吸了氧才过的QwQ) # include <bits/stdc++.h> # de ...
- 【转】Linux系统进程的知识总结,进程与线程之间的纠葛
我们先打个比方,多线程是十字路口多线程是平面交通系统,造价低,但是红绿灯多,老堵车,而多进程是则是立交桥,虽然造价高,上下坡多耗油,但是不堵车.这是一个抽象的概念.相信大家看完会有这种感觉. 进程和线 ...
- Problem C: 文体双花 解题报告
Problem C: 文体双花 被A穿的题,我这个屑只拿了20... 意识到这个题简单的时候考试已经快结束了,那边又各种吵,不过下午改题的情况来看,我可能码力还有点问题... 据神O所说,出这个题的时 ...
- 树莓派上使用KickThemOut对局域网内的设备进行ARP欺骗
安装KickThemOut工具 $ git clone https://github.com/k4m4/kickthemout.git $ cd kickthemout/ $ sudo -H pip ...