利用js写碰撞反弹方法

方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#box{
width: 800px;
height: 400px;
border: #2E8B57 3px solid;
margin: 30px auto;
position: relative;
}
#qiu{
width: 50px;
height: 50px;
border-radius: 50%;
background-color: gold;
position: absolute;
left: 0;
top: 0;
}


</style>
</head>
<body>
<div id="box">
<div id="qiu"></div>
</div>
</body>
</html>
<script type="text/javascript">
//记录当前的位置小球的位置
var left = 0;
var top1 = 0;
//定义变量 用于设置小球left和top值的变化
var x = 3; //水平方向 left
var y = 2; //垂直方向 top


//定义函数 用于小球移动
function move(){
left += x;
top1 += y;

//判断界限值!!! 水平方向 left值
if(left >= box.clientWidth - qiu.offsetWidth || left <= 0){
x *= -1;
}


//判断top方向的临界值
if(top1 >= box.clientHeight - qiu.offsetHeight || top1 <= 0){
y *= -1;
}

//赋值给标签的属性
qiu.style.left = left + "px";
qiu.style.top = top1 + "px";

}

setInterval(move, 10);




</script>

方法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
#root{
width: 600px;
height: 400px;
background-color: gray;
margin: 100px auto;
position: relative;
}
#qiu{
width: 50px;
height: 50px;
border-radius: 50%;
background-color: skyblue;
position:absolute;
transition: all linear .1s;
}
</style>
</head>
<body>
<div id="root">
<div id="qiu">

</div>
</div>
</body>
</html>

<script type="text/javascript">
var qiuleft=qiu.offsetLeft;
var qiutop=qiu.offsetTop;
var movex=true,movey=true;
console.log(qiuleft);
console.log(qiutop);
var s1=setInterval(move,100);

function move(){
if(movex){
qiuleft+=50;
qiu.style.left=qiuleft+"px";
if(qiuleft==600){
movex=false;
}
}
if(movex==false){
qiuleft-=50;
qiu.style.left=qiuleft+"px";
if(qiuleft==0){
movex=true;
}
}

if(movey){
qiutop+=50;
qiu.style.top=qiutop+"px";
if(qiutop==400){
movey=false;
}
}
if(movey==false){
qiutop-=50;
qiu.style.top=qiutop+"px";
if(qiutop==0){
movey=true;
}
}

}
</script>

运行结果:


利用js写碰撞反弹方法
http://ultracode.cn/2020/11/23/JS/利用js写一个碰撞反弹/
作者
Win
发布于
2020年11月23日
许可协议