0
点赞
收藏
分享

微信扫一扫

Js实现多物体运动+带源码

js动画我们首先想到的就是添加定时器,在js中添加定时器有两种:

如果在一个项目中,多个对象同时使用一个定时对象,就会导致每次操作对象的定时器都会同时修改整体变有的量,也即是要变同时变化,要么就是动画没有结束就被提前取消定时器,达不到理想的效果。解决这样的问题(BUG),很简单就是在每一个对象的开始就自定义添加一个变量,然后通过调用函数将对象和变量引入。具体操作请看如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		div{
			width: 100px;
			height: 100px;
			background-color: red;
			margin-top: 10px;
		}
		</style>
		<script>
		window.onload=function(){
			var aDiv = document.getElementsByTagName('div');
			for(var i=0;i<aDiv.length;i++){
				aDiv[i].timr = null;
				aDiv[i].onmouseover=function(){
					startMove(this,300)
				}
				aDiv[i].onmouseout=function(){
					startMove(this,100)
				}
			}
		}
		function startMove(obj , iTarger){
			clearInterval(obj.timr);
			obj.timr=setInterval(function(){
				var speed = (iTarger-obj.offsetWidth)/6;
				speed = speed>0?Math.ceil(speed):Math.floor(speed);
				if(obj.offsetWidth==iTarger){
					clearInterval(obj.timr);
				}else{
					obj.style.width=obj.offsetWidth+speed+'px';
				}
			},30);
		}
		</script>
	</head>
	<body>
		<div></div>
		<div></div>
		<div></div>
	</body>
</html>
举报

相关推荐

0 条评论