当前位置: 首页 > 工具软件 > shake > 使用案例 >

抖动函数;shake()

蔚丰
2023-12-01
/*
		 
		 * //obj:对象 ;attr:属性  endFn:回调函数
		 * move(obj, attr,endFn//function(){回调执行事件})
		 * 注释*1
		 * obj.onOff
		 * 防止定时器插队
		 * 当函数执行时该值将成为不可执行值
		 * 知道定时器执行完成后改变该值
		 * 
		 * 注释*2
		 * 回调函数
		 * 判断当前函数是否存在
		 * 如果存在就执行
		 * 
		 * 
		 * 注释*3
		 * 使用for循环来生成obj的抖动幅度
		 * 并保存于Arr数组中
		 * 注意需要添加[0]
		 * */

function shake(obj, attr, endfn) {
	var timer = null
	var arr = []
	var num = 0

	if(!obj.onOff) { //注释*1
		obj.onOff = true
		//
		for(var i = 20; i > 0; i--) {
			arr.push(i, -i)
		}
		arr.push(0)
		//至上一个//部分为	注释*3
		var pos = parseInt(getStyle(obj, attr))//使用getStyle()函数

		timer = setInterval(function() {
			obj.style[attr] = pos + arr[num] + "px" //执行当前函数要求
			num++ //使用 num 调取出Arr数组中的值
			if(num == arr.length) { //判断当前事件是否已经完成
				clearInterval(timer) //已经完成,清除定时器
				obj.onOff = false //注释*1
				if(endfn) { //注释*2
					endfn()
				}
			}

		}, 30)
	}
}

function getStyle(obj, attr) { //getStyle()  获取元素当前属性值
	return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj)[attr]
}

 类似资料: