I just tossed this super simple code example into a Flash CS4 IDE frame script, but it doesn't output anything in the console. I'm simply rolling over my mouse over the window, not clicking anything, and nothing is happening. Why doesn't this work as I expect?
stage.addEventListener(Event.MOUSE_LEAVE, traceMouse);
function traceMouse(Evt:Event):void
{
trace("Mouse Left Stage");
}
________________________________________________
[EDIT] i find Event.MOUSE_LEAVE incredibly useless. first, it doesn't work in the testing environment (on Flash CS4 for Mac OS X, at least). second, it doesn't fire if MouseEvent.MOUSE_DOWN is currently active:
Flash CS4 Professional ActionScript 3.0 Language Reference:
Updated 8/11/09: Added qualification
that event is not fired when button is
pressed.1
in my particular situation, i wanted MOUSE_LEAVE to fire while i was dragging an object so that in the event the user drags his/her mouse pointer off of the stage it would fire stopDrag(). since that's not possible i've decided to use MOUSE_OUT on the actual object rather than MOUSE_LEAVE on the object's parent or stage.
private function mouseDownHandler(evt:MouseEvent):void
{
object.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
object.startDrag(false, pullBounds);
}
private function mouseUpHandler(evt:MouseEvent):void
{
object.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
object.stopDrag();
}
private function mouseOutHandler(evt:MouseEvent):void
{
object.stopDrag();
}
Best Answer
Here's a couple additional tricky things to know (when running in a browser) :
One bizarre thing is that in Chrome + Firefox, the MOUSE_LEAVE event isn't dispatched for a WMODE of
OPAQUE
orTRANSPARENT
. It just doesn't fire - mouse down or up.With
WINDOW
it works fine. That one took me a long time to find out! grr... http://bugs.adobe.com/jira/browse/FP-892Second, make sure you're using
Event
for the parameter type for yourEvent.MOUSE_LEAVE
handler and notMouseEvent
. If you try to handleMOUSE_LEAVE
withe:MouseEvent
you'll get an error that you may never see (unless you're using the debug flash player). It's a very easy mistake to make because you're probably pointing all your other handlers to the same method.Here's what I do: (just call my main
endDrag
frommouseLeave(e:Event)