碰撞运动

1、点击开始运动,盒子开始运动,碰到/超出可是区范围,盒子返回来运动。 

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>碰撞运动</title>
	<style>
		#div1{
			width: 260px;
			height: 160px;
			background: url(pz.jpg) center center / cover no-repeat;
			position: absolute;
			left: 130px;
		}
	</style>
	<script>
		var iSpeedX=5;
		var iSpeedY=6;
		var timer=null;
		window.onload=function(){
			var oDiv=document.getElementById("div1");
			var oBtn=document.getElementById("btn");
			oBtn.onclick=function(){
				startMove(oDiv);
			}
		}
		function startMove(obj){
			clearInterval(timer);
			timer=setInterval(function(){
				var l=obj.offsetLeft+iSpeedX;
				var t=obj.offsetTop+iSpeedY;
				if (l>document.documentElement.clientWidth-obj.offsetWidth) {
					iSpeedX*=-1;
					l=document.documentElement.clientWidth-obj.offsetWidth;
				}
				else if(l<0){
					iSpeedX*=-1;
				}
				if (t>document.documentElement.clientHeight-obj.offsetHeight) {
					iSpeedY*=-1;
					t=document.documentElement.clientHeight-obj.offsetHeight;
				}
				else if(t<0){
					iSpeedY*=-1;
				}

				obj.style.left=l+'px';
				obj.style.top=t+'px';
			},30);
		}
	</script>
</head>
<body>
	<div id="div1"></div>
	<input type="button" value="点击开始运动" id="btn">
</body>
</html>

结果展示:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 JavaScript 代码示例,可以实现点击按钮后两个盒子之间的碰撞运动: HTML 代码: ```html <button id="btn">点击开始运动</button> <div id="box1"></div> <div id="box2"></div> ``` CSS 代码: ```css #box1, #box2 { width: 50px; height: 50px; background-color: red; position: absolute; top: 50px; left: 50px; } #box2 { background-color: blue; top: 100px; left: 100px; } ``` JavaScript 代码: ```javascript var btn = document.getElementById('btn'); var box1 = document.getElementById('box1'); var box2 = document.getElementById('box2'); btn.onclick = function() { var speed1 = 5; // 盒子1的速度 var speed2 = -3; // 盒子2的速度 var timer = setInterval(function() { var left1 = box1.offsetLeft + speed1; var top1 = box1.offsetTop; var left2 = box2.offsetLeft + speed2; var top2 = box2.offsetTop; if (left1 + box1.offsetWidth >= left2 && left1 <= left2 + box2.offsetWidth && top1 + box1.offsetHeight >= top2 && top1 <= top2 + box2.offsetHeight) { // 碰撞后反弹 speed1 = -speed1; speed2 = -speed2; } if (left1 <= 0 || left1 + box1.offsetWidth >= document.documentElement.clientWidth) { // 盒子1到达边界后反弹 speed1 = -speed1; } if (left2 <= 0 || left2 + box2.offsetWidth >= document.documentElement.clientWidth) { // 盒子2到达边界后反弹 speed2 = -speed2; } box1.style.left = left1 + 'px'; box2.style.left = left2 + 'px'; }, 30); }; ``` 这段代码中,我们首先获取了按钮和两个盒子的 DOM 元素,然后给按钮添加了一个点击事件处理函数。在事件处理函数中,我们定义了两个变量 speed1 和 speed2,分别表示盒子1和盒子2的速度。然后使用 setInterval 函数来不断更新盒子的位置,实现运动效果。在更新位置的过程中,我们判断两个盒子是否发生了碰撞,如果发生了碰撞,则让它们反弹。同时,我们还判断盒子是否到达了边界,如果到达了边界,则让它们反弹。最后,我们将盒子的位置更新到 DOM 中,完成了碰撞运动的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值