动画过程中的bug
根据老师的实现我自己写了一段代码,跟老师的不太一样,但是动画过程中有一定几率出现bug。代码如下:
<script> window.onload=function(){ var myDiv=document.getElementById('box1'); var timer=null; myDiv.onmouseover=function(event){ timer=setTimeout(move,30); function move(){ clearTimeout(timer); if(myDiv.offsetLeft>=0) return; else{ myDiv.style.left = myDiv.offsetLeft + 5 +'px'; setTimeout(move,30); } } } myDiv.onmouseout=function(event){ timer=setTimeout(move,30); function move(){ clearTimeout(timer); if(myDiv.offsetLeft<=-600) return; else{ myDiv.style.left = myDiv.offsetLeft -5 +'px'; setTimeout(move,30); } } } } </script>
我把div的宽度设置为600px,left值也为-600px,然后执行代码,在动画过程中反复触发鼠标事件。或者直接触摸span标签。有时候动画就一直执行,闪来闪去,不会停止。
我的分析是mouseover的结束条件是left>=0,mouseout的结束条件是left<=-600,当在动画过程中,即mouseover未结束时,又触发了mouseout事件。left的值就可能永远位于-600到0之间。动画就不会停止。
请问大神这样分析对不?有什么方法解除这种bug?
另外如果要实现无论是否在动画执行过程中,鼠标over上时,left就增加,鼠标移开,马上left减小这样的效果,有什么方法?