Tengo un panel, dentro de el un canvas y dentro del canvas, 2 rectángulos -> Sprite() (o dos imágenes -> Image()).
En todos los elementos tengo definidos el atributo ID y creo todo desde código y no desde el Design del flash builder.
Código Flex :
private function init(): void { var p:Panel = new Panel(); var c:Canvas = new Canvas(); c.id = "canvas"; p.id = "panel"; var b1:Image = new Image(); b1.source = 'assets/img.jpg'; b1.width = 50; b1.height = 50; b1.id = "img1"; var b2:Image = new Image(); b2.source = 'assets/img.jpg'; b2.width = 25; b2.height = 25; b2.id = "img2"; c.width = 700; c.height = 400; c.addChild(b1); c.addChild(b2); b1.x = 50; b1.y = 50; b2.x = 300; b2.y = 40; this.addElement(p); c.addEventListener(MouseEvent.MOUSE_OVER, mouseOver); //b1.addEventListener(MouseEvent.MOUSE_OVER, mouseOver); //b2.addEventListener(MouseEvent.MOUSE_OVER, mouseOver); //b1.addEventListener(MouseEvent.CLICK, mouseClick); //b2.addEventListener(MouseEvent.CLICK, mouseClick); c.addEventListener(MouseEvent.CLICK, mouseClick); }
y los listener
Código Flex :
private function mouseOver(e:MouseEvent): void { trace ("OVER: Target: " + e.target + ", CurrentTarget: " + e.currentTarget.id ); } private function mouseClick(e:MouseEvent): void { trace ("CLICK: Target: " + e.target + ", CurrentTarget: " + e.currentTarget.id ); trace ("CLICK: Pos x: " + e.localX + ". Pos y: " + e.localY); }
Logro obtener el elemento seleccionado con el currentTarget del evento (en el evento mouse CLICK).
Lo que quiero lograr es que cuando el mouse se encuentra encima de una imagen cambie el cursor. Haciendo trace en el evento mouse OVER del target y currentTarget me da los siguientes resultados.
Código :
OVER: Target: aplicacion.ApplicationSkin2._ApplicationSkin_Group1.contentGroup.panel.canvas.img1.FlexLoader10, CurrentTarget: canvas OVER: Target: aplicacion.ApplicationSkin2._ApplicationSkin_Group1.contentGroup.panel.canvas.img2.FlexLoader11, CurrentTarget: canvas OVER: Target: aplicacion.ApplicationSkin2._ApplicationSkin_Group1.contentGroup.panel.canvas.img1.FlexLoader10, CurrentTarget: canvas CLICK: Target: aplicacion.ApplicationSkin2._ApplicationSkin_Group1.contentGroup.panel.canvas.img1.FlexLoader10, CurrentTarget: canvas CLICK: Pos x: 168.05. Pos y: 168 OVER: Target: aplicacion.ApplicationSkin2._ApplicationSkin_Group1.contentGroup.panel.canvas.img2.FlexLoader11, CurrentTarget: canvas CLICK: Target: aplicacion.ApplicationSkin2._ApplicationSkin_Group1.contentGroup.panel.canvas.img2.FlexLoader11, CurrentTarget: canvas CLICK: Pos x: 144.05. Pos y: 96 CLICK: Target: aplicacion.ApplicationSkin2._ApplicationSkin_Group1.contentGroup.panel.canvas.img2.FlexLoader11, CurrentTarget: canvas CLICK: Pos x: 144.05. Pos y: 96
y otro problema que tengo es que cuando hago click en un lugar del canvas que no tiene ninguna imagen no me captura el X e Y, como que no entra al evento CLICK del canvas en los espacios blancos.
Y una ultima pregunta, hay alguna manera de saber cual fue el ultimo elemento seleccionado en la pantalla?.