0

So You clicked mouse outside your target .. How to detect it - Flex

by Deepak Dhakal 11. June 2009 09:31


In ActionScript3 event driven programming plays a major part with mouse or key pressed and even a text field having events associated with them. Events indicate action e.g. mouse press corresponds to “mouse down” event and vice versa is “mouse up” event.

To check if mouse release (mouseUp -Event.MOUSE_UP)) has happened on the target object on which mouse down - Event.MOUSE_DOWN took place or a “mouse up outside “event when mouse up has not happened on the target object; there is no predefined event with AS3 unlike its earlier versions that had “onReleaseOutside event”.

To resolve this, we need to add stage event handler for mouse up in mouse down event handler. By adding stage event handler for mouse up will detect any global mouse up event. Hence it will check if the event associates the target object that has mouse down event earlier or it was a mouse up outside event not related with the target object.

Package {
Import flash.display.DisplayObject;
import flash.events.*;

public var child: DisplayObject = new DisplayObject ();
public function childdown(event:MouseEvent):void
{
// mouse up event happens only when there is mouse down
trace("child mouse down");
stage.addEventListener(MouseEvent.MOUSE_UP,childUpOutside);
}

Public function childUpOutside (event:MouseEvent):void
{
if (event.target != child)
{
trace("child mouse up outside");
}
stage.removeEventListener(MouseEvent.MOUSE_UP, childUpOutside);
}
}

Tags:

Flex

Powered by BlogEngine.NET 1.5.0.7
Original Design by Laptop Geek, Adapted by onesoft