Comunidad de diseño web y desarrollo en internet online

on release por cada dato XML

Citar            
MensajeEscrito el 27 Ene 2010 05:48 pm
Hola , he creado varios movieclips, y con el xml cargo un código hexadecimal de color para pintarlos... pero lo que deseo es que al darle clic a esos movieclips me muestre ese código hexadecimal y me lo muestre en un campo de texto en la escena principal, he hecho esto:

Código ActionScript :

var nombres = new Array();
var colores = new Array();
var nodos_total:Number;


var arichoXML:XML = new XML();
arichoXML.ignoreWhite = true;// -- ignorar espacios 
arichoXML.onLoad = function(succes){// -- proceso si la carga tuvo éxito
   if(succes){
      var nodos:Array = this.firstChild.childNodes;
      nodos_total = nodos.length;
      if(nodos_total > 0){
         for(i=0; i < nodos.length; i++){
            nombres[i] = nodos[i].childNodes[0].firstChild;
            colores[i] = nodos[i].childNodes[1].firstChild;
            color = new Color(_root["mc_c" + i ]);
            t_col = "0x" + colores[i];
            color.setRGB( t_col );
            _root["txt" + i ].text = nombres[i];
            
[b]            _root["mc_c" + i ].onRelease = function(){
               _root["txtcodigo"].text = t_col;
               trace("mc_c" + i );
            }[/b]
         }
      } else {
         trace("No se han encontrado imagenes.");
      }
   } else {
      trace("Error al Leer archivo XML");
   }
};
// -- cargar XML
arichoXML.load("xml.xml");


Código ActionScript :

_root["mc_c" + i ].onRelease = function(){
  _root["txtcodigo"].text = t_col;
  trace("mc_c" + i );
}


Creo que mi error es meter esta funcion dentro del for ya que al ejecutar y al hacer clic al MC siempre me muestra el último item del xml. Hay alguna otra solución?, espero me puedan ayudar. Gracias.

Por cesarpunk

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 Ene 2010 10:10 pm
@cesarpunk, si guardas la variable "i" dentro del MovieClip después la puedes utilizar en el evento onPress. Mira el código de esta clase, utiliza algo parecido.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 27 Ene 2010 10:55 pm
Hola gracia spor responder... pero no entiendo mucho de clases... encontré una solución de paso, pero no es la más óptima:

Código ActionScript :

var arichoXML:XML = new XML();
arichoXML.ignoreWhite = true;// -- ignorar espacios 
arichoXML.onLoad = function(succes){// -- proceso si la carga tuvo éxito
   if(succes){
      var nodos:Array = this.firstChild.childNodes;
      nodos_total = nodos.length;
      if(nodos_total > 0){
         for(i=0; i < nodos.length; i++){
            nombres[i] = nodos[i].childNodes[0].firstChild;
            colores[i] = nodos[i].childNodes[1].firstChild;   
                  
            color = new Color(_root["mc_c" + i ]);
            t_col = "0x" + colores[i];
            color.setRGB( t_col );
            _root["txt" + i ].text = nombres[i];
            
         }
            _root["mc_c0"].onRelease = function(){ 
               colores[0] = nodos[0].childNodes[1].firstChild;
               _root["txtcodigo"].text = colores[0];
            }
            
            _root["mc_c1" ].onRelease = function(){ 
               colores[1] = nodos[1].childNodes[1].firstChild;
               _root["txtcodigo"].text = colores[1];
            }
            
            _root["mc_c2"].onRelease = function(){ 
               colores[2] = nodos[2].childNodes[1].firstChild;
               _root["txtcodigo"].text = colores[2];
            }
            
            _root["mc_c3" ].onRelease = function(){ 
               colores[3] = nodos[3].childNodes[1].firstChild;
               _root["txtcodigo"].text = colores[3];
            }
            
            _root["mc_c4" ].onRelease = function(){ 
               colores[4] = nodos[4].childNodes[1].firstChild;
               _root["txtcodigo"].text = colores[4];
            }
            
            _root["mc_c5" ].onRelease = function(){ 
               colores[5] = nodos[5].childNodes[1].firstChild;
               _root["txtcodigo"].text = colores[5];
            }
            
            _root["mc_c6" ].onRelease = function(){ 
               colores[6] = nodos[6].childNodes[1].firstChild;
               _root["txtcodigo"].text = colores[6];
            }
            
            _root["mc_c7" ].onRelease = function(){ 
               colores[7] = nodos[7].childNodes[1].firstChild;
               _root["txtcodigo"].text = colores[7];
            }
            
            _root["mc_c8" ].onRelease = function(){ 
               colores[8] = nodos[8].childNodes[1].firstChild;
               _root["txtcodigo"].text = colores[8];
            }
            
            _root["mc_c9" ].onRelease = function(){ 
               colores[9] = nodos[9].childNodes[1].firstChild;
               _root["txtcodigo"].text = colores[9];
            }
            
            _root["mc_c10" ].onRelease = function(){ 
               colores[10] = nodos[10].childNodes[1].firstChild;
               _root["txtcodigo"].text = colores[10];
            }
            
      } else {
         trace("No se han encontrado imagenes.");
      }
   } else {
      trace("Error al Leer archivo XML");
   }
};
// -- cargar XML
arichoXML.load("xml_prueba1.xml");




Como ves, repito demasiadas veces las funciones... pero funciona! mi intención es que esa funcion sea dinamica y aparesca tantas veces como nodos hay y que se distribuyan en los MC ... porfavor, me podrías dar un ejemplo pero sin clases?? si es que hay solución a esto...

Por cesarpunk

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 Ene 2010 11:15 pm
Bueni sip, jeje vi el ejemplo que me mandaste y agregue esto:

Código ActionScript :

         for(i=0; i < nodos.length; i++){
            nombres[i] = nodos[i].childNodes[0].firstChild;
            colores[i] = nodos[i].childNodes[1].firstChild;
            _root["mc_c" + i].numero = i;
                  
            color = new Color(_root["mc_c" + i ]);
            t_col = "0x" + colores[i];
            color.setRGB( t_col );
            _root["txt" + i ].text = nombres[i];
            
            _root["mc_c" + i].onRelease = function() :Void{ 
               _root["txtcodigo"].text = colores[this.numero];
            }
            
         }


con ese this.numero funciona!

Por cesarpunk

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Ene 2010 08:42 am
El código es el mismo lo mismo dentro de una clase que fuera, guardas la variable "i" dentro del movieClip y accedes a ella en el evento.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

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