碰撞运动

1. 物体掉落

 1     window.onload = startMove;
 2
 3     var iSpeedX = 100;
 4     var iSpeedY = 8;
 5
 6     function startMove() {
 7         setInterval(function() {
 8             var oDiv = document.getElementById("div1");
 9
10             //加重力
11             iSpeedY += 5;
12
13             var l = oDiv.offsetLeft + iSpeedX;
14             var t = oDiv.offsetTop + iSpeedY;
15
16             //防止出界
17             if (l >= document.documentElement.clientWidth - oDiv.offsetWidth) {
18                 iSpeedX *= -0.8;
19                 l = document.documentElement.clientWidth - oDiv.offsetWidth;
20             } else if (l <= 0) {
21                 iSpeedX *= -0.8;
22                 l = 0;
23             }
24
25             if (t >= document.documentElement.clientHeight - oDiv.offsetHeight) {
26                 iSpeedY *= -0.8;
27                 iSpeedX *= 0.8;
28                 t = document.documentElement.clientHeight - oDiv.offsetHeight;
29             } else if (t <= 0) {
30                 iSpeedY *= -0.8;
31                 iSpeedX *= 0.8;
32                 t = 0;
33             }
34
35             //解决小数为负数不停止滑动的问题
36             if (Math.abs(iSpeedX) < 1) {
37                 iSpeedX = 0;
38             }
39
40             if (Math.abs(iSpeedY) < 1) {
41                 iSpeedY = 0;
42             }
43
44             oDiv.style.left = l + "px";
45             oDiv.style.top = t + "px";
46         }, 30);
47     }

2. 抛扔物体

 1     window.onload = function() {
 2         var oDiv = document.getElementById("div1");
 3         var lastX = 0;
 4         var lastY = 0;
 5
 6         oDiv.onmousedown = function(ev) {
 7             clearInterval(timer);
 8
 9             var oEvent = ev || event;
10             var disX = oEvent.clientX - oDiv.offsetLeft;
11             var disY = oEvent.clientY - oDiv.offsetTop;
12
13             document.onmousemove = function(ev) {
14                 var oEvent = ev || event;
15
16                 var l = oEvent.clientX - disX;
17                 var t = oEvent.clientY - disY;
18
19                 oDiv.style.left = l + "px";
20                 oDiv.style.top = t + "px";
21
22                 //计算时刻位移来获取速度
23                 iSpeedX = l - lastX;
24                 iSpeedY = t - lastY;
25
26                 lastX = l;
27                 lastY = t;
28             };
29
30             document.onmouseup = function() {
31                 document.onmousemove = null;
32                 document.onmouseup = null;
33                 startMove();
34             };
35         };
36     };
37     var timer = null;
38     var iSpeedX = 0;
39     var iSpeedY = 0;
40
41     function startMove() {
42         clearInterval(timer);
43         timer = setInterval(function() {
44             var oDiv = document.getElementById("div1");
45
46             //加重力
47             iSpeedY += 5;
48
49             var l = oDiv.offsetLeft + iSpeedX;
50             var t = oDiv.offsetTop + iSpeedY;
51
52             //防止出界
53             if (l >= document.documentElement.clientWidth - oDiv.offsetWidth) {
54                 iSpeedX *= -0.8;
55                 l = document.documentElement.clientWidth - oDiv.offsetWidth;
56             } else if (l <= 0) {
57                 iSpeedX *= -0.8;
58                 l = 0;
59             }
60
61             if (t >= document.documentElement.clientHeight - oDiv.offsetHeight) {
62                 iSpeedY *= -0.8;
63                 iSpeedX *= 0.8;
64                 t = document.documentElement.clientHeight - oDiv.offsetHeight;
65             } else if (t <= 0) {
66                 iSpeedY *= -0.8;
67                 iSpeedX *= 0.8;
68                 t = 0;
69             }
70
71             //解决小数为负数不停止滑动的问题
72             if (Math.abs(iSpeedX) < 1) {
73                 iSpeedX = 0;
74             }
75
76             if (Math.abs(iSpeedY) < 1) {
77                 iSpeedY = 0;
78             }
79
80             //运动终止条件
81             if (iSpeedX == 0 && iSpeedY == 0
82                 && t == document.documentElement.clientHeight - oDiv.offsetHeight) {
83                 clearInterval(timer);
84             } else {
85                 oDiv.style.left = l + "px";
86                 oDiv.style.top = t + "px";
87             }
88         }, 30);
89     }
时间: 2024-10-14 05:38:49

碰撞运动的相关文章

简单的碰撞运动

需要的js //碰撞运动 //对运动的方向以及临界值的处理 function bumpMove(obj) { clearInterval(obj.timer); var speedX = 10; var speedY = 10; timer = setInterval(function() { var L = obj.offsetLeft + speedX; var T = obj.offsetTop + speedY; if(T > document.documentElement.clien

javascript运动系列第九篇——碰撞运动

× 目录 [1]碰撞检测 [2]无损碰撞 [3]有损碰撞 前面的话 碰撞可以分为碰壁和互碰两种形式,上篇介绍了碰壁运动,本文将从浅入深地介绍碰撞运动的互碰形式 碰撞检测 对于互碰形式的碰撞运动来说,首先要解决的是碰撞检测.对于矩形元素的碰撞检测前面的博文已经详细介绍过,下面主要介绍圆形元素的碰撞检测 矩形元素的碰撞检测利用九宫格分析法,而圆形元素的碰撞检测则简单很多,判断两个圆形元素的半径之和是否大于两个圆形元素的圆心点坐标之间的距离即可 由示意图可知,元素一的圆心位置为(x1,y1),半径为r

HTML5 Canvas彩色小球碰撞运动特效

脚本简介 HTML5 Canvas彩色小球碰撞运动特效是一款基于canvas加面向对象制作的运动小球动画特效. 效果展示 http://hovertree.com/texiao/html5/39/ 效果图如下: 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>HTML5 Canvas彩色小球碰撞运动特效

JS运动基础(四) 碰撞运动

碰撞运动撞到目标点,速度反转无重力的漂浮Div速度反转滚动条闪烁的问题过界后直接拉回来 加入重力反转速度的同时,减小速度纵向碰撞,横向速度也减小横向速度小数问题(负数) 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>无标题文档

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> &l

重力+碰撞运动

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <style> 5 #div1 {wid

JS运动从入门到兴奋1

hello,我是沐晴,一个充满了才华,却靠了照骗走江湖的前端妹子.在这个充满PS的年代,这你们都信,哈哈,废话不多说,今天要分享的是关注JS运动的知识.楼主一直认为,不管学习什么,核心思想才是王道,掌握了思想,不管需求怎么改变,我们都能把它玩弄于股掌之中...下面我们就由浅入深走进运动的世界吧. 首先来看最基础的运动:单个物体向右匀速运动到某一点停止      例子:一个按钮,一个div,点击按钮,让div向右运动到某一个位置暂停 // 原理: 1 获取物体当前的位置 oDiv.offsetle

关于js运动的一些总结

js运动实现,有两种.一种是速度版,另一种是时间版. 速度版是通过对速度的加减乘除,得出元素的运动数据.时间版是通过对时间进行Tween公式运算,得出元素的运动数据. 速度版运动优点:容易在运动过程中,对运动做一些修改. 时间版运动优点:切换或缩小浏览器页面,浏览器会对网页定时器进行停缓处理.这样会导致一些速度版运动bug.因为时间版运动是通过记录时间变化区间,来对运动进行控制.所以不会有这种bug. 运动形式有:缓冲运动,碰撞运动,重力运动.缓冲运动,是速度自身也在变化的结果.碰撞运动,是碰撞

运动--扩展

弹性运动 l加减速运动 <!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> <style> #div1 {w