views:

1344

answers:

2

How can I enumerate display objects under a pixel relative to the stage?

Clarification: I want to write a function which get (x,y) as input and returns an array of objects as output.

update: I want to avoid looping over all the display objects, to tell which one is under the specified pixel.

A: 

The hitTestPoint() method will get you information if a DisplayObject is at the specified point (http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObject.html#hitTestPoint())

To get a list of objects you would have to recursively investigate all children of the stage, I don't think there is a predefined function for that.

Alternatively: What are you trying to achieve? Maybe you can just use events and make them bubble?

Simon Groenewolt
This is problematic, because this way I would have to call hitTextPoint to all display object added to the display list, and it would slow things down. I just want objects to react to nearby objects.
Richard J. Terrell
Ah, as Bryan points out, there actually is a method to get a list!
Simon Groenewolt
+5  A: 

Any DisplayObjectContainer (such as a MovieClip or the stage) has a method called getObjectsUnderPoint that returns an array of display objects under that point. It takes a Point object as an argument.

var myObjects: Array = stage.getObjectsUnderPoint(new Point(5, 5));

If you are using it in a class don't forget to import flash.geom.Point;

Bryan Grezeszak
Nice, I didn't know that one.
Simon Groenewolt