Me precipité en mi respuesta.... En efecto, la función getObjectsUnderPoint() funciona, pero cuando le da la gana... por así decirlo...
Mi situación es la siguiente:
Tengo un canvas "Estadistica" que ocupa toda la aplicacion. Dentro un componente "Accordion" en el que hay un canvas "canvasZonas" que contiene una imagen de una pista de baloncesto y un boton.
Mi aplicación va a recibir una serie de coordenadas y necesito estudiar cuantos de esos puntos están dentro de la zona, cuales dentro de triple y así en diversas partes de la pista...
La idea que estoy implementando, es dibujar esas zonas manualmente mediante drawPath(), y esto lo hago en la clase "Figura" que extiende de la clase "Image". Entonces el objeto "Figura" lo meto en el canvas "canvasZonas".
Una vez hecho esto, utilizo la funcion
punto = canvasZonas.getObjectsUnderPoint(punto); para ver si debajo de ese punto se encuentra el objeto "Figura".

El problema que me encuentro es que no me reconoce los objetos que hay debajo del punto. En ocasiones me dice que hay un objeto [Bitmap] que imagino será la imagen de la cancha pero es lo único que me aparece. De la única manera que me reconoce el objeto "Figura" es cuando hago
punto = canvasZonas.localToGlobal(punto);, pero claro las coordenadas del punto se vuelven globales, pero las de el objeto "Figura" no, por lo que el resultado tampoco es correcto.
Aquí os pongo un poco la estructura y el código que tengo para ver si alguien me ve algún error y me puede ayudar con esto... Llevo ya una semana con el tema y estoy por tirar el ordenador por la ventana...
Código Flex :
<mx:Canvas id="Estadistica" creationPolicy="all">
<mx:Accordion>
...
<mx:Canvas id="canvasZonas" label="Zonas">
<mx:Image source="..." id="cancha_baloncesto.png"/>
<mx:Button label="Estudiar zonas" click="estudiarZona(event);"/>
</mx:Canvas>
</mx:>ccordion>
</mx:Canvas>
Esta función se ejecuta al principio de la aplicación:
Código ActionScript :
private function crearFigurasZonas():void{
//Creamos la zona1
var figura_zona1:Figura = new Figura(0xffffff, new Array(0,106, 126,134, 126,216, 0,244));
figura_zona1.name = "zona1";
figura_zona1.visible = true;
zonas[1] = figura_zona1;
canvasZonas.addChildAt(zonas[1], 0);
}
"zonas" es un array en el que voy a ir metiendo todas las figuras que vaya creando.
Cuando clickeo el boton que está en "canvasZonas" se ejecuta la siguiente funcion:
Código ActionScript :
private function estudiarZona(evento:MouseEvent):void{
var i:uint, j:uint;
var objetos:Array;
var cont:int = 0;
var num_zona:uint = int(evento.currentTarget.name);
zonas[num_zona].visible = true;
trace(canvasZonas.getChildren());
for(i=0; i<Jugador[JUG_SELECTED].longitud.length; i++){
var long:int = Jugador[JUG_SELECTED].longitud[i];
var lat:int = Jugador[JUG_SELECTED].latitud[i];
var p:Point = new Point(long, lat); trace(p);
//p = canvasZonas.localToGlobal(p); trace(p);
objetos = canvasZonas.getObjectsUnderPoint(p);
trace("Longitud " + objetos.length + " " + objetos);
for(j=0; j<objetos.length; j++){
if(objetos[j].name == zonas[num_zona].name)
cont++;
}
}
trace("Jugador " + JUG_SELECTED + ": " + cont + " / " + Jugador[JUG_SELECTED].longitud.length);
}
En esta funcion, se van obteniendo los distintos puntos a estudiar (longitud, latitud) del jugador seleccionado y como veis hago la comprobación de si debajo de ese punto se encuentra el objeto "Figura" que quiero estudiar.
He probado todo tipo de cosas... y ya no sé qué más probar...
Ojalá alguno podais ayudarme.
Millones de gracias!
Un saludo!