Event.MOUSE_LEAVE是伟大的Actionscript 3,但它似乎没有触发,如果用户握住他们的左(或正确的事情)鼠标按钮。
有没有办法检测鼠标在鼠标按住的同时离开Flash影片?或者如果它是在Flash电影之外发布的?
解决方法
要获得所有这一切需要一点点黑客。您必须存储鼠标是否离开舞台,并相应地处理Event.MOUSE_LEAVE事件。这样做可以提供所有正常的鼠标功能,包括不要因为鼠标离开舞台而阻止拖动。由于用户可能会回到舞台上并继续拖动,因此等待用户在舞台上或者舞台上释放鼠标。
var mouSEOffStage:Boolean; var bonk:YourDisplayObject = new YourDisplayObject() addChild(bonk); bonk.addEventListener(MouseEvent.MOUSE_DOWN,function():void { mouSEOffStage = false; bonk.startDrag(); stage.addEventListener(MouseEvent.MOUSE_UP,mouseUp); stage.addEventListener(Event.MOUSE_LEAVE,mouseLeave); stage.addEventListener(MouseEvent.MOUSE_OUT,mouSEOut); stage.addEventListener(MouseEvent.MOUSE_OVER,mouSEOver); }) private function mouseUp(e:MouseEvent) :void { trace("Mouse Up On Stage") bonk.stopDrag() } private function mouseLeave(e:Event) :void { if(mouSEOffStage){ trace("mouse up and off stage"); bonk.stopDrag(); }else{ trace("mouse has left the stage"); //no reason to stop drag here as the user hasn't released the mouse yet } } private function mouSEOut(e:MouseEvent) :void { mouSEOffStage = true; trace("mouse has left the stage") } private function mouSEOver(e:MouseEvent) :void { mouSEOffStage = false; trace("mouse has come back on stage"); }
黑客是,当鼠标从舞台上释放时,MOUSE_LEAVE事件而不是MOUSE_UP事件被触发,因此您必须跟踪鼠标是否已经在播放时已经处于关闭状态。