flash动画:鼠标放上去图像慢慢变大,鼠标移走时图像慢慢缩小 失灵的有关问题
flash动画:鼠标放上去图像慢慢变大,鼠标移走时图像慢慢缩小 失灵的问题!
上面是我我写的代码,大致功能就是当鼠标放在物体上时,图像一直增大到某一个值,当鼠标移开时图片一直减小到某一个值.现在功能大致实现了 但有一个很大的bug不知怎么解决 就是当图片在增大(减小)的过程中如果鼠标从图片上挪开的话(或者快速在图片上来回移动)接下来图片将无法在继续增大或者减小?这是怎么回事 望高手指点!
------解决方案--------------------
因为又触发了Over或Out事件的缘故
------解决方案--------------------
楼主不防加个状态锁(lock),当开始缩放时,就维持状态,直到操作完成。下面的我写的测试代码,请参考一下。Pic2zoom是元件类,该元件是个影片剪辑,里面是一张图片。
- JScript code
imgLoader.addEventListener(MouseEvent.MOUSE_OVER, mouseOverFun,false,4); imgLoader.addEventListener(MouseEvent.MOUSE_OUT, mouseOutFun, false, 3); private function mouseOverFun(event:MouseEvent):void { imgLoader.addEventListener(Event.ENTER_FRAME, enlarge, false, 2); } //鼠标移出时缩小 private function mouseOutFun(event:MouseEvent):void { imgLoader.addEventListener(Event.ENTER_FRAME, deflate,false,1); } private function deflate(event:Event):void { if(imgLoader.width > currentWidth){ imgLoader.width -= 2; imgLoader.height -= 2; }else imgLoader.removeEventListener(Event.ENTER_FRAME, deflate); } private function enlarge(event:Event):void { if (imgLoader.width < maxWidth){ imgLoader.width += 2; imgLoader.height += 2; }else imgLoader.removeEventListener(Event.ENTER_FRAME, enlarge); }
上面是我我写的代码,大致功能就是当鼠标放在物体上时,图像一直增大到某一个值,当鼠标移开时图片一直减小到某一个值.现在功能大致实现了 但有一个很大的bug不知怎么解决 就是当图片在增大(减小)的过程中如果鼠标从图片上挪开的话(或者快速在图片上来回移动)接下来图片将无法在继续增大或者减小?这是怎么回事 望高手指点!
------解决方案--------------------
因为又触发了Over或Out事件的缘故
------解决方案--------------------
楼主不防加个状态锁(lock),当开始缩放时,就维持状态,直到操作完成。下面的我写的测试代码,请参考一下。Pic2zoom是元件类,该元件是个影片剪辑,里面是一张图片。
- JScript code
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class piczoom extends Sprite { private var pic:Pic2zoom; private var lock:Boolean=false; private var dir:Number=-1; public function piczoom() { pic=new Pic2zoom(); pic.x=stage.stageWidth-pic.width/2; pic.y=stage.stageHeight-pic.height/2; pic.scaleX=0.5; pic.scaleY=0.5; stage.addChild(pic); pic.addEventListener(MouseEvent.MOUSE_OVER,changedir); pic.addEventListener(MouseEvent.MOUSE_OUT,changedir); } private function changedir(e:MouseEvent):void { if (! lock) { lock=true; dir=0-dir; pic.addEventListener(Event.ENTER_FRAME,zoom); } } private function zoom(e:Event):void { pic.scaleX+=dir*0.01; pic.scaleY+=dir*0.01; if (pic.scaleX>=1||pic.scaleY>=1||pic.scaleX<=0.5||pic.scaleY<=0.5) { pic.removeEventListener(Event.ENTER_FRAME,zoom); lock=false; } } } }