Comunidad de diseño web y desarrollo en internet online

[CONSULTA] Target o currentTarget

Citar            
MensajeEscrito el 22 Feb 2012 02:30 am
Buenas, tengo una pequeña dificultad que capaz que me puedan ayudar.

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?.

Por elmemis

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 22 Feb 2012 04:10 am
1. en flash.as3 hay una propiedad que es el "mouseChild" que por defecto es de valor "true"...hay que comprobarlo
2. en flash.as3 cuando el contenedor no tiene ningun contenido exepto en de otros clips...no tiene acciones del raton salvo en los otros clips...hay que comprobarlo
3. para guardar el valor anterior basta con guardar el objeto del clip en una variable de un objeto de visualizacion

espero que te pueda ayudar estos comentarios y te resuelvan las dudas

saludos

Por Yonomimi

76 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Feb 2012 12:50 pm
Con el mouseChild creo que no puedo hacer lo que quiero.
Yo quiero cuando hago click o me posiciono arriba de una imagen o botón que se encuentra dentro del canvas, el currentTarget sea el botón y no el canvas.
Si yo le agrego a la imagen o botón el mouse event click, cuando hago click me dice que el currentTarget es el botón pero enseguida me aparece que el currentTarget es el canvas.

Código :

Thu Feb 23 10:47:21 GMT-0200 2012CLICK: Target: aplicacion.ApplicationSkin4._ApplicationSkin_Group1.contentGroup.panel.canvas.img1.FlexLoader12, CurrentTarget: img1
CLICK: Pos x: 114.05. Pos y: 120
Thu Feb 23 10:47:21 GMT-0200 2012CLICK: Target: aplicacion.ApplicationSkin4._ApplicationSkin_Group1.contentGroup.panel.canvas.img1.FlexLoader12, CurrentTarget: canvas
CLICK: Pos x: 114.05. Pos y: 120

ahí dejo un ejemplo, enseguida me marca que currentTarget es el canvas.

Espero que me puedan ayudar.

Por elmemis

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 23 Feb 2012 07:18 pm
"target" --> Objeto que recoge el CLICK

"currentTarget" --> Objeto que lanza el "MouseEvent"

aqui te pongo un ejemplo

Código ActionScript :

import flash.display.MovieClip;
import flash.events.MouseEvent;

var Principal: MovieClip= new MovieClip();
Principal.name= "Principal";
Principal.x= 0;
Principal.y= 0;
Principal.graphics.beginFill(0xFF0000);
Principal.graphics.drawRect(0,0,300,300);
Principal.graphics.endFill();
addChild(Principal);

var Contenedor: MovieClip= new MovieClip();
Contenedor.name= "Contenedor";
Contenedor.x= 50;
Contenedor.y= 50;
Contenedor.graphics.beginFill(0x000000);
Contenedor.graphics.drawRect(0,0,200,200);
Contenedor.graphics.endFill();
Principal.addChild(Contenedor);

var Imagen: MovieClip= new MovieClip();
Imagen.name= "Imagen";
Imagen.x= 50;
Imagen.y= 50;
Imagen.graphics.beginFill(0x0000FF);
Imagen.graphics.drawRect(0,0,100,100);
Imagen.graphics.endFill();
Contenedor.addChild(Imagen);

Principal.addEventListener(MouseEvent.CLICK, RatonPulsado);

function RatonPulsado (e: MouseEvent): void
{
   trace(e.target.name+" "+e.currentTarget.name);
}


saludos

Por Yonomimi

76 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Feb 2012 07:36 pm
Ese código me da error, pero igualmente lo entiendo.
Puse todo el contenido en una función de inicio (init()) pero me da error con el primer addChild.

Yo utilizo Flash Builder 4.6.

Slds y gracias por la respuesta!

Por elmemis

4 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.