|
| 1 | +/*2015 11 25 23:32*/ |
| 2 | + |
| 3 | +//获取样式信息 |
| 4 | +function getStyle(node,attr){ //无法取到复合样式 如:border |
| 5 | + if(node.currentStyle){ //IE |
| 6 | + return node.currentStyle[attr]; |
| 7 | + }else{ |
| 8 | + return getComputedStyle(node,false)[attr]; |
| 9 | + } |
| 10 | +} |
| 11 | +//多属性缓冲运动 |
| 12 | +function bufferMove(obj,json,fn){ |
| 13 | + clearInterval(obj.timer); |
| 14 | + obj.timer = setInterval(function(){ |
| 15 | + var state = true; |
| 16 | + for(var attr in json){ |
| 17 | + var iCur = 0; |
| 18 | + if(attr == 'opacity'){ |
| 19 | + iCur = parseInt(parseFloat(getStyle(obj,attr))*100); |
| 20 | + }else{ |
| 21 | + iCur = parseInt(getStyle(obj,attr)); |
| 22 | + } |
| 23 | + var iSpeed = (json[attr]-iCur)/8; |
| 24 | + iSpeed = iSpeed>0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); |
| 25 | + if(iCur != json[attr]){ |
| 26 | + state = false; |
| 27 | + } |
| 28 | + if(attr == 'opacity'){ |
| 29 | + obj.alpha = iCur+iSpeed; |
| 30 | + obj.style.filter = 'alpha(opacity:'+obj.alpha+')'; |
| 31 | + obj.style.opacity = obj.alpha/100; |
| 32 | + }else{ |
| 33 | + obj.style[attr] = iCur+iSpeed+"px"; |
| 34 | + } |
| 35 | + } |
| 36 | + if(state){ |
| 37 | + clearInterval(obj.timer); |
| 38 | + if(fn){fn();} |
| 39 | + } |
| 40 | + },30); |
| 41 | +} |
| 42 | +//弹性运动 |
| 43 | +function elasticityMove(obj,attr,iTarget,fn){ |
| 44 | + var iVal = 0; |
| 45 | + var iSpeed = 0; |
| 46 | + clearInterval(obj.timer); |
| 47 | + obj.timer=setInterval(function(){ |
| 48 | + if(iTarget == parseInt(getStyle(obj,attr))){ |
| 49 | + return; |
| 50 | + } |
| 51 | + iSpeed +=(iTarget-parseInt(getStyle(obj,attr)))/5; |
| 52 | + iSpeed *=0.7; |
| 53 | + iVal += iSpeed; |
| 54 | + if((Math.abs(iSpeed)<1)&&(Math.abs(iVal-iTarget)<1)){ |
| 55 | + clearInterval(obj.timer); |
| 56 | + obj.style[attr] = iTarget+'px'; |
| 57 | + if(fn){fn();} |
| 58 | + }else{ |
| 59 | + obj.style[attr] = iVal+'px'; |
| 60 | + console.log(iSpeed); |
| 61 | + } |
| 62 | + },30); |
| 63 | +} |
| 64 | +//基于底边的碰撞运动 |
| 65 | +function collisionMove(obj,xSpeed,ySpeed){ |
| 66 | + var w = document.documentElement.clientWidth; |
| 67 | + var h = document.documentElement.clientHeight; |
| 68 | + var xNow = 0; |
| 69 | + var yNow = 0; |
| 70 | + clearInterval(obj.timer); |
| 71 | + obj.timer = setInterval(function(){ |
| 72 | + ySpeed +=3; |
| 73 | + xNow= obj.offsetLeft+xSpeed; |
| 74 | + yNow = obj.offsetTop+ySpeed; |
| 75 | + if(yNow>=(h-obj.offsetHeight)){ |
| 76 | + ySpeed *= -0.8; |
| 77 | + xSpeed *= 0.8; |
| 78 | + yNow = h-obj.offsetHeight; |
| 79 | + }else if(yNow<=0){ |
| 80 | + ySpeed *= -1; |
| 81 | + yNow = 0; |
| 82 | + } |
| 83 | + if(xNow>=(w-obj.offsetWidth)){ |
| 84 | + xSpeed *= -0.8; |
| 85 | + xNow = w-obj.offsetWidth; |
| 86 | + }else if(xNow<=0){ |
| 87 | + xSpeed *= -0.8; |
| 88 | + xNow = 0; |
| 89 | + } |
| 90 | + if(Math.abs(xSpeed)<1){ |
| 91 | + xSpeed = 0; |
| 92 | + } |
| 93 | + if(Math.abs(ySpeed)<1){ |
| 94 | + ySpeed = 0; |
| 95 | + } |
| 96 | + if(xSpeed == 0&& ySpeed == 0&&yNow == h-obj.offsetHeight){ |
| 97 | + clearInterval(obj.timer); |
| 98 | + }else{ |
| 99 | + obj.style.left = xNow+'px'; |
| 100 | + obj.style.top = yNow+'px'; |
| 101 | + } |
| 102 | + },30); |
| 103 | +} |
0 commit comments