Comunidad de diseño web y desarrollo en internet online

Cambio de nombre de variables dinámicamente en AS3?

Citar            
MensajeEscrito el 08 Mar 2009 09:17 pm
Hola, tengo estoy intentado hacer una galería de imágenes, donde la imagen sobre la que se posiciona el cursor aumente de tamañao y cuando el cursor se retire vuelve al tamaño original.
Tengo un problema con los eventos, necesito cambiar el nombre de una variable de forma dinámica cuando la creo en el bucle for, o de alguna otra forma, sino al hacer addEventListener siempre se queda escuchando el event para la última imagen creada y no en todas como yo quiero.

Tengo una clase InfoWindowTabbedComponent , su constructor recibe un objeto de tipo Marker, un identificador de unobjeto marker y un array de objetos XML que son imágenes donde uno de los campos contiene la ruta en el directorio donde se encuentra la imagen.

Basicamente el constructor crea un panel definiendo como child un HBox.
Recorro el array de imágenes y por cada imagen creo un objeto image, que lo añado al HBox, a cada objeto image le añado 2 eventos de Mouse, si MouseOver la imagen se verá mas grande, si MouseOut la imagen se verá más pequeña.

El problema como he dicho,es que si el vector tiene varias imágenes, el MouseEvent se queda escuchando solamente para la última imagen creada, es decir si el HBox tiene 7, solo la séptima cambiará de tamaño, aunque me posicione en la primera, segunda, tercera o cualquiera de las imágenes de la galería.
Había pensado en crear una variable con nombre diferente para cada imagen. algo como
var ("img"+i):Image=new Image();

Pero no consigo hacerlo, alguna solución? hay otra forma más elegante de hacerlo sin usar el bucle for y concatenando cadenas?
A continuación os pongo el código. Gracias.

Código :

public function InfoWindowTabbedComponent(m:Marker,id_m:int,imag_marca:Array) {

       var panel:Box = new Box();
      panel.width = (200+150*imagenes_marca.length);
      panel.height = (200+100*imagenes_marca.length);
        
     var hbox:HBox = new HBox ();
      var img:Image;
     for (var i:Number = 0; i < imagenes_marca.length; i++) {
          
          img =new Image();
                      img.source=imagenes_marca[i].@ruta;
                       img.width=50;
                      img.height=50
          img.maintainAspectRatio=true;

         hbox.addChild(img);
       
         img.addEventListener(MouseEvent.MOUSE_OVER, function(e:MouseEvent):void {
             img.width=100;
              img.height=100
         });
         img.addEventListener(MouseEvent.MOUSE_OUT, function(e:MouseEvent):void {
             img.width=50;
             img.height=50
         });

       panel.addChild(hbox);     
      addChild(panel);
      
  }
     }

Por riestra

73 de clabLevel



 

msie7
Citar            
MensajeEscrito el 09 Mar 2009 09:18 am
No necesitas tener variables para cada una de las imágenes(*), sino que tienes que usar e.target dentro de la función

Código ActionScript :

img.addEventListener(MouseEvent.MOUSE_OVER, function(e:MouseEvent):void {
        e.target.width=100;
        e.target.height=100
});

puesto que img no tiene ningún valor dentro de esa función, (realmente, como has comprobado, tiene el valor de la última imagen creada por el for -pero no el vaalor que nos interesa-)

(*)Sólo como dato, ya he comentado que no es necesario puesto que tenemos el DispalyObject en e.target, sería

Código ActionScript :

this["imagen"+i]=new Image()

Pero eso incluso complicaría más la función, pues tendríamos que saber que "i" le corresponde

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Mar 2009 12:12 pm
Perfecto. Funciona con e.target.
Ahora me surgen otros 2 problemillas.

1- Como mantengo el AspectRatio?

Al principio le digo que lo conserve con:

[code
]img.source=imagenes_marca[i].@ruta;
img.maintainAspectRatio=true;
img.width=50;
img.height=50[/code]

Pero en cuanto hago e.target.width=300; y e.target.width=50 dentro de

Código :

img.addEventListener(MouseEvent.MOUSE_OVER, function(e:MouseEvent):void
{ y MouseEvent.MOUSE_OUT respectivamente, pierde el aspecto ratio, y si coloco e.target.maintainAspectRatio=true; me da un error en ejecución

Error #1056: No se puede crear la propiedad maintanAspectRatio en mx.core.FlexLoader.

2 problema- Al aumentar de tamaño las fotos se solapan,quedan por debajo de la última. La última está sobre las demás siempre, cuando debería estar por encima sobre la que me posiciono y aumenta de tamaño. ¿Como lo soluciono?

¿Conoces algun recurso, manual etc para crear una galería de imágenes que es lo que estoy haciendo, y sencilla para poder utilizarla dentro de un CustomContent de la API de GoogleMaps?
Gracias por todo, un saludo.

Por riestra

73 de clabLevel



 

msie7
Citar            
MensajeEscrito el 09 Mar 2009 02:47 pm
Lo que tiene e.target es que el compilador no sabe qué tipo de DisplayObject es, así que a veces hay que hacer una "conversión de cast"
Así que entiendo que debería ser(*)

Código ActionScript :

Image(e.target).maintainAspectRatio=true

Sobre lo de poner por encima de todos es cuestión de usar setChildIndex

Código ActionScript :

parent.setChildIndex(e.target,parent.numChildren-1)

Debería colocarte en la posición más alta la "img"
(*)Es que ando un pelín verde en Flex

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Mar 2009 04:49 pm

Eliseo2 escribió:

No necesitas tener variables para cada una de las imágenes(*), sino que tienes que usar e.target dentro de la función

Código ActionScript :

img.addEventListener(MouseEvent.MOUSE_OVER, function(e:MouseEvent):void {
        e.target.width=100;
        e.target.height=100
});

debes de ser muy cuidadoso con eso target no siempre devuelve el control que está disparando el evento, para estar seguro, tienes que usar currentTarget :wink:

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

safari
Citar            
MensajeEscrito el 09 Mar 2009 05:33 pm
Pues ni una cosa ni la otra. Lo de poner encima he probado:

parent.setChildIndex(e.target,parent.numChildren-1);
//error en tiempo de compilación
1118: Conversión implícita de un valor con tipo estático Object a un tipo flash.display:DisplayObject posiblemente no relacionado.

e.target.parent.setChildIndex(e.target,parent.numChildren-1);
//Error en tiempo de ejecución
RangeError: Error #2006: El índice proporcionado está fuera de los límites.
at flash.display::DisplayObjectContainer/setChildIndex()

e.target.parent.setChildIndex(e.target,e.target.parent.numChildren-1);

Así no da error, pero no hace nada, es como si no escribiese la línea de código....

Y lo de mantener la proporción:
Image(e.target).maintainAspectRatio=true;
//TypeError: Error #1034: Error de conversión forzada: no se puede convertir mx.core::FlexLoader@c384641 en mx.controls.Image.


Sigo atascado....

Por riestra

73 de clabLevel



 

msie7
Citar            
MensajeEscrito el 10 Mar 2009 09:27 am
El problema es que el "target" es el loader interno, así que la cosa debería quedar como

Código ActionScript :

               img.addEventListener(MouseEvent.MOUSE_OVER, function(e:MouseEvent):void {
                  var img:Image = e.target.parent;
                  img.width =100;
                  img.height  = 100;
                  img.maintainAspectRatio = true;
                  img.parent.setChildIndex(img, img.parent.numChildren - 1);
               });
               img.addEventListener(MouseEvent.MOUSE_OUT, function(e:MouseEvent):void {
                  var img:Image = e.target.parent;
                  img.width=50;
                  img.height=50
                  img.maintainAspectRatio = true;
               });

NOTA:He usado una variable auxiliar "img" que hace referencia a e.target.parent para una mayor comodidad
NOTA2:He hecho una "mala" prueba en Flex. Con un Canvas en lugar de un hBox.

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Mar 2009 09:48 pm
Hola, gracias por los esfuerzos, por partes:

Lo último que has puesto:

Código :

                  img.addEventListener(MouseEvent.MOUSE_OVER, function(e:MouseEvent):void { 
      img.width=(300+20*imagenes_marca.length);
      img.height=(150+15*imagenes_marca.length);
      img.maintainAspectRatio=true;
      img.parent.setChildIndex(img, img.parent.numChildren - 1); 
     }); 
      
      img.addEventListener(MouseEvent.MOUSE_OUT, function(e:MouseEvent):void {
      var img:Image = e.target.parent; 
      img.width=50; 
      img.height=50;
      img.maintainAspectRatio=true;
     });


No funciona, siempre aumenta la última imagen de la lista de imágenes, poniendome sobre cualquier imagen, y a veces la imagen se queda atascada, no vuelve al estado de 50X50...

Con este otro código:

La ultima línea de cada función está en comentario porque con ella, las imagenes funcionan mal, no se exactamente lo que hace pero se descolocan...


Código :

   img.addEventListener(MouseEvent.MOUSE_OVER, function(e:MouseEvent):void {
            
             e.currentTarget.width=(300+20*imagenes_marca.length);
            e.currentTarget.height=(150+15*imagenes_marca.length);
           // e.currentTarget.parent.setChildIndex(e.currentTarget,parent.numChildren-1); 
         });
         img.addEventListener(MouseEvent.MOUSE_OUT, function(e:MouseEvent):void {
            
            e.currentTarget.width=50;
            e.currentTarget.height=50
           // e.currentTarget.parent.setChildIndex(e.currentTarget,parent.numChildren-1); 
             
         });



Con este código funciona bien, se amplia la imagen sobre la que posiciono el cursor, y mantiene el aspectRatio (parece que al usar e.currentTarget ya mantiene la propiedad definida antes al crear la Image)
El único problema es que al estar las imágenes en forma de filas, una a la derecha de la otra, cuando aumentamos una imagen y pasa a ocupar gran parte del InfoWindow, desplaza el resto de las imágenes hacia la derecha, sacándolas fuera del infowindow, y creando una barra de scroll, como si ocupase mas sitio que el contenedor sobre el que está la galería de imágenes....

Aqui os dejo una captura con el efecto que produce, como veis la imagen se sale del cuadro y desplaza al resto de las imágenes hacia la derecha. (en el ejemplo hay 5 imágenes cargadas)

[img][/img]


Así que, qué necesito? Que la maldita imagen se cargue de forma centrada, ocultado el resto de las imágenes y no saliendo ella fuera del InfoWinfow y arrastrando a las imágenes siguientes.
Alguna solución? Me estoy dando cabezazos ya.

Por riestra

73 de clabLevel



 

msie7
Citar            
MensajeEscrito el 11 Mar 2009 07:22 am
En lo último que había puesto te faltó la línea siguiente (en ambas funciones) A mí me funcionó.

Código ActionScript :

var img:Image = e.target.parent; 

Vale, he llamado a la variable igual que la que usabas antes, pero es otra
Trata de usar un Canvas en lugar de un HBox y recuerda ponerle tamaño al Canvas.

Código ActionScript :

var hbox:Canvas= new Canvas(); //<--ahora es un Canvas


NOTA:No hay nada "mágico" en usar target o currentTarget. La "magia" es que usas "parent". Vamos, si escribes

Código ActionScript :

trace(e.target) //<--saldrá algo como imagen0.loader11
tarce(e.target.parent) //<--será la imagen0 (del tipo Image)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2009 07:38 am
Se me olvidó. Si usas un Canvas, no se te olvide posicionar las fotos cuando las crees

Código ActionScript :

for (var i:Number = 0; i < imagenes_marca.length; i++) {
          img =new Image();
          img.source=imagenes_marca[i].@ruta;
          img.width=50;
          img.height=50
          img.maintainAspectRatio=true;
          //<---aquí las posicionamos----->
          //p.e.
          img.x=i*50
          //ó , en columnas de 10
          img.x=(i%10)*50; 
          img.y=Math.floor(i/10)*60

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2009 06:15 pm

Código :

var hbox:Canvas = new Canvas (); 
      var img:Image;
     for (var i:Number = 0; i < imagenes_marca.length; i++) {
                 img =new Image(); 
    img.source=imagenes_marca[i].@ruta;
    img.maintainAspectRatio=true;
    img.width=50;
    img.height=50;
    img.x=i*50;
    img.y=Math.floor(i/10)*60;
  img.addEventListener(MouseEvent.MOUSE_OVER, function(e:MouseEvent):void { 
         var imagen:Image = e.target.parent;
         imagen.width=(300+20*imagenes_marca.length);
         imagen.height=(150+15*imagenes_marca.length);
         imagen.maintainAspectRatio=true;
   });       
      img.addEventListener(MouseEvent.MOUSE_OUT, function(e:MouseEvent):void {
         var imagen:Image = e.target.parent; 
         imagen.width=50; 
         imagen.height=50;
         imagen.maintainAspectRatio=true;
 });
}      
      
      panel.addChild(hbox);     
      addChild(panel);


Con esta linea no funcionaba, todavía no se para qué sirve.
--------------------
//e.currentTarget.parent.setChildIndex(e.currentTarget,parent.numChildren-1); --------------

Este es exactamente el código ejecutado. Cambiar el HBox por el Canvas ha solucionado el problema del desplazamiento del resto de las imágenes al ampliarse la imagen seleccionada. Pero siguen existiendo 2 problemas.
1- Al ampliar la imagen, el resto de las imágenes quedan superpuestas sobre ella.
2- Si la imagen a ampliar está en un extremo se sale del InfoWinfow.

(La primera imagen queda debajo de las otras 3)
[img][/img]

(La imagen sale fuera del InfoWindow, creando debajo una barra de scroll)
[img][/img]

La solución parece fácil, cambiar el atributo x e y de la imagen cuando es ampliada, y posicionarlos en el centro del InfoWindow, sin embargo no se cómo almacenar la posición original de CADA imagen cuando hay un evento MouseOVER, para luego recuperarla y que vuelva a la posic originar en el evento MouseOUT.

¿Sino que otra solución le ves? ¿Se podría abrir algun tipo de ventana, como un alert, al hacer un evento click sobre una imagen y cargar en esa ventana la imagen? Teniendo en cuenta que todo esto lo estoy haciendo dentro del constructor de CustomContent que define el contenido de un InfoWindow en GoogleMaps...

Gracias, salu2.

Por riestra

73 de clabLevel



 

msie7
Citar            
MensajeEscrito el 12 Mar 2009 08:02 am

riestra escribió:


Con esta linea no funcionaba, todavía no se para qué sirve.
--------------------
//e.currentTarget.parent.setChildIndex(e.currentTarget,parent.numChildren-1); --------------

Es que no es esa es

Código ActionScript :

imagen.parent.setChildIndex(imagen, imagen.parent.numChildren - 1); 

Vamos, le queremos decir que "imagen" se vaya a la posición más alta de todos los MCs que haya en el contenedor que lo contiene.
Vamos, imaginemos que tu hbox (tu Canvas) tiene
imagen1 (0) imagen2(1) imagen3(2) imagen4(3)
Entre paréntesis está el "ChildIndex" -por eso se ve por encima imagen4 de imagen3-
si queremos que imagen1 esté por encima de todas deberíamos asignarle un "childIndex" de 3 (el de la posición más alta).
La DisplayList funciona de modo que, cambiando un índice, el resto se acomoda. Así, si cambiamos el child index de imagen1 a 3, quedaría
imagen1 (3) imagen2(0) imagen3(1) imagen4(2)
Claro que el modo de cambiar el childIndex es desde un método del "contenedor"

riestra escribió:


2- Si la imagen a ampliar está en un extremo se sale del InfoWinfow.
(La imagen sale fuera del InfoWindow, creando debajo una barra de scroll)

La solución parece fácil, cambiar el atributo x e y de la imagen cuando es ampliada, y posicionarlos en el centro del InfoWindow, sin embargo no se cómo almacenar la posición original de CADA imagen cuando hay un evento MouseOVER, para luego recuperarla y que vuelva a la posic originar en el evento MouseOUT.

En Flex podemos guardar datos en la propiedad "data" de muchos componentes. Así que podríamos usar eso para guardar la posición x inicial. Pero ¡OJO! no conviene que al posicionar la imagen esta se "salga" del ratón. Porque inmediatamente se ejecutaría el rollOUT. Personalmente comprobaría si la posición x más el tamaño es mayor que el ancho del canvas y, caso de que así ea que la x sea igual al ancho del canvas menos el ancho de la imagen.
El modo de usar la propiedad data es

Código ActionScript :

for (var i:Number = 0; i < imagenes_marca.length; i++) {
    img =new Image(); 
    ....
    //decimos que es un nuevo Objeto
    img.data=new Object();
    //le damos valor a data.x0
    img.data.x0=i*50;
    .....
    //en la función MOUSE_OVER
    img.addEventListener(MouseEvent.MOUSE_OVER, function(e:MouseEvent):void { 
         var imagen:Image = e.target.parent;
         .....
         //podemos cambiar la x
         imagen.x=200;
         ....
   });       
   //en la función MOUSE_OUT
      img.addEventListener(MouseEvent.MOUSE_OUT, function(e:MouseEvent):void {
         var imagen:Image = e.target.parent; 
        ......
         //igualamos la x a data.x0
         imagen.x=imagen.data.x0
   });
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Mar 2009 08:12 pm
Hola, gracias por responder.
Usando el Canvas como me has dicho, al cargar las imagenes en 50x50 consigo posicionarlas en filas o columnas pero no me permite posicionarlas en filas y con una "y" determinada para que no aparezcan pegadas al lateral del infowindow en columnas o a la parte superior cuando es en filas. Es decir, para :

Código :


var canvas_imagenes:Canvas = new Canvas() ; 
      canvas_imagenes.width = (700+20*imagenes_marca.length);
      canvas_imagenes.height = (450+15*imagenes_marca.length);

 for (var i:Number = 0; i < imagenes_marca.length; i++) {
              img =new Image(); 
                        img.data=new Object();     
                        img.buttonMode=true;
            img.source=imagenes_marca[i].@ruta;
            img.maintainAspectRatio=false;
            img.height=50;
            img.width=50;
            img.x=(i*60);
            img.y=100;
           // img.y=(Math.floor(i/10)*60)+50;
                                     img.data.x0=img.x;
                                     img.data.y0=img.y;
             canvas_imagenes.addChild(img);
   
          img.addEventListener(MouseEvent.MOUSE_OVER,function(e:MouseEvent):void { 


La posición de las imágenes en 50x50 es la misma para img.y=100, que img.y=200, o img.y=300, no cambia. Como si no lo tuviese en cuenta. Pero lo que si cambia al modificar img.y es la imagen al ser ampliada. No entiendo por qué, ya que aqui estoy definiendo la posición cuando la imagen se crea la 1ª vez, no cuando cuando se dispara el evento.

Lista de imágenes para cualquier valor img.y=100, img.y=200 o img.y=300
[img][/img]

Imagen ampliada con img.y=100
[img][/img]

img.y=200
[img][/img]

img.y=300
[img][/img]

Sin embargo cuando esas coordenadas las especifico dentro la funcion q se ejecuta con MOUSE_OVER, sitúa la imagen en el centro del infowindow o donde yo lo especifique, pero luego viene el problema que comentabas que es que se dispara MOUSE_OUT y de nuevo MOUSE_OVER...

Código :

 


img.addEventListener(MouseEvent.MOUSE_OVER,function(e:MouseEvent):void { 
   var imagen:Image = e.target.parent; 
    imagen.maintainAspectRatio=true;
    imagen.width=(450+20*imagenes_marca.length);
     imagen.height=(350+15*imagenes_marca.length);
     imagen.parent.setChildIndex(imagen, imagen.parent.numChildren - 1);
     imagen.y=350;
   imagen.x=150;  
         });


 


He probado con MOUSE_DOWN o MouseEvent.CLICK pero lo que consigo es que desaparezca de la lista para aparecer en el centro, obviamente necesito que aparezca en los 2 sitios.

1- ¿Por qué no sitúa cada foto de 50x50 de la galería donde le especifico con img.y, y por qué modifica la posic de la imagen ampliada?
2 -¿ Crees que lo que trato de hacer se puede hacer de alguna manera con otro tipo de evento como el click o MouseDown o estoy planteando algo mal de base? ( Lo que trato de evitar es usar thumbnails, y sí usar una sola foto)


Gracias por tu tiempo, un saludo.

Por riestra

73 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Mar 2009 09:33 am
Para posicionar una serie de elementos en filas y columnas en un bucle se suele usar Math.floor y el operador módulo. p.e.

Código ActionScript :

var NUM_COLUMNAS:Number=20;
for (var i:Number = 0; i < imagenes_marca.length; i++) {
       img =new Image(); 
       img.x=10+(i%NUM_COLUMNAS)*60;
       img.y=20+Math.floor(i/NUM_COLUMNAS)*60
       ....
}

No entiendo qué te puede estar pasando para que no "bajen"
Sobre lo del problema con el rollOver puedes crear, además de los Image que hacen de thumbail, otro más (digamos que se llama "grande") y en el rollOver simplemente igualar las sources

Código ActionScript :

img.addEventListener(MouseEvent.MOUSE_OVER, function(e:MouseEvent):void {
   var img:Image = e.target.parent;
   grande.source = img.source;
}

Ya sé que no es lo mismo pero..

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Mar 2009 10:43 am
Hola,
he conseguido resolver el problema del rollOver como me has dicho, creando otra imagen e igualando las sources luego en el RollOut elimino el último child añadido al canvas y así desaparece el grande. Lo que no he conseguido ha sido poner la lista de imágenes iniciales o thumbnails donde a mi me dé la gana. Imposible. Parece como si el canvas tuviera una alineación por defecto, o algo que coloca los elementos por defecto a partir de la esquina superior izquierda. He buscado pero no he encontrado esa propiedad. Sí consigo aumentar la separación entre los thumbnails con

Código :

 img.x=((i%num_columnas)*60);                   
img.y=(Math.floor(i/num_columnas)*60);


Pero colocarlos a 50 pixels del borde superior e izquierdo, ni de broma.

El código final un poco más limpio y claro. A ver si se te ocurre como puedo hacerlo.

Código :

public function InfoWindowContenido1(m:Marker,id_m:int,imag_marca:Array) {
      var marker:Marker =m ;
      var id_marca:Number = id_m;
      
      var num_columnas:Number=10;   //Num de columnas para mostrar los thumbnails
      
      var imagenes_marca:Array = new Array();
         imagenes_marca =  imag_marca;
                                                     //Ancho y alto de la imagen al aumentarla
      var ancho_imagen:Number=250;
      var alto_imagen:Number=150;
                               //Ancho y alto extra del canvas segun el num de imagenes que lo forman
      var ancho_extra:Number=10*imagenes_marca.length; 
      var alto_extra:Number=7*imagenes_marca.length;
                              //Posicion x e y centrada de la imagen cuando se aumenta
      var pos_grande_X:Number=((500 + ancho_extra)- ancho_imagen)/2;
      var pos_grande_Y:Number=((350 + alto_extra + 25*(imagenes_marca.length/10+1))- alto_imagen)/2;
     
      var canvas_imagenes:Canvas = new Canvas() ;   
         canvas_imagenes.width = (500+ancho_extra);
         canvas_imagenes.height = (350+alto_extra);
for (var i:Number = 0; i < imagenes_marca.length; i++) {
              var img:Image = new Image();
              img.x=((i%num_columnas)*60);                   
              img.y=(Math.floor(i/num_columnas)*60);
              img.data=new Object();        
              img.buttonMode=true;             
             img.height=50;
             img.width=50;
             img.source=imagenes_marca[i].@ruta;
             img.maintainAspectRatio=false;
             img.data.x0=img.x;
             img.data.y0=img.y;
           
            canvas_imagenes.addChild(img);
                
         img.addEventListener(MouseEvent.MOUSE_OVER,function(e:MouseEvent):void { 
            var imagen:Image = e.target.parent;
            var grande:Image = new Image();
            grande.source=imagen.source;
            grande.y=pos_grande_Y;
            grande.x=pos_grande_X;           
            grande.width=ancho_imagen;
            grande.height=alto_imagen;
            canvas_imagenes.addChild(grande);
                       
         }); 
     
        img.addEventListener(MouseEvent.MOUSE_OUT, function(e:MouseEvent):void {
            var imagen:Image = e.target.parent;          
            imagen.maintainAspectRatio=false;
            imagen.width=50; 
            imagen.height=50;         
            imagen.x=imagen.data.x0;
            imagen.y=imagen.data.y0;
            canvas_imagenes.removeChildAt( canvas_imagenes.getChildren().length-1);
         
         });   
     } //final del for
     
      addChild(canvas_imagenes);
} // final del constructor
}//final de la clase
}//final del package


De nuevo gracias.

Por riestra

73 de clabLevel



 

msie7
Citar            
MensajeEscrito el 17 Mar 2009 01:19 pm
Bueno, resuelto, o eso creo.
No sabía muy bien la diferencia entre contenedores, hasta que he visto en el API de Flex que el Panel admite 1000 posibilidades y estilos, paddingTop, paddingBottom, estilo de alineamiento etc. Canvas no sé si estoy en lo cierto, pero no permite hacer una mi...., o eso me ha parecido, todo lo que buscaba cómo hacer en el Canvas creo que puedo hacerlo de forma fácil en el Panel. ¿Realmente, hay alguna utilidad de usar un Canvas si no es para poner una imagen de fondo o algo por el estilo? Seguiré probando y reprobando.
Gracias por la ayuda.

Por riestra

73 de clabLevel



 

msie7

 

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