Comunidad de diseño web y desarrollo en internet online

Hacer trace de datos de un array desde otra clase AS3(flash)

Citar            
MensajeEscrito el 26 May 2009 04:19 am
Hola estimados, nuevamente hoy llego con una nueva duda.
Resulta que dentro de las clases de un proyecto fla, tengo 3 clases, la clase Main (vinculada al fla) la cual contiene un arreglo, la clase Song la cual tiene algunas variables y la clase Interfaz que mostrara imagenes en un determinado frame del fla.

Mi duda es saber como hacer que en la clase Interfaz se pueda hacer trace del arreglo que había creado en la clase Main.

A continuación el codigo:

clase Main:

Código :

package {
   import flash.display.*;

   public class Main extends MovieClip {

      public var songList:Array = new Array();

      public function Main() {
         creaSongList();
      }

      public function creaSongList() {

         for (var i=0; i<5; i++) {
            var objSong:Song = new Song();
            objSong.aTrackNumber=i;
            objSong.aArtist=xmldata."artista"+i;
            objSong.aTrackName="cancion"+i;

            songList.push(objSong);
         }
      }
   }
}


clase Song

Código :

package{
   public class Song{
      
      public var aTrackNumber:uint;
      public var aArtist:String;
      public var aTrackName:String;      
   }   
}


clase Interfaz

Código :

package {
   import flash.display.*;
   import flash.events.*;

   public class Interfazextends MovieClip {      

      public function Interfaz() {

         trace(Main.songList[0].aTrackNumber);
                        //NO LOGRO HACER TRACE DE LOS DATOS DEL ARRAY songList 

      }

   }
}


Saludillos

Por ganoncl

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 May 2009 04:51 am
Varios errores, posteo denuevo el codigo de mi duda.

Código :

package {
   import flash.display.*;

   public class Main extends MovieClip {

     public var songList:Array = new Array();

     public function Main() {
       creaSongList();
     }

     public function creaSongList() {

       for (var i=0; i<5; i++) {
         var objSong:Song = new Song();
         objSong.aTrackNumber=i;
         objSong.aArtist="artista"+i;
         objSong.aTrackName="cancion"+i;

         songList.push(objSong);
       }
     }
      public function startInterfaz() {  //Este se instancia en el tercer frame del fla.
         var gui:Interfaz= new Interfaz();
         addChild(gui);
      }
   }
}

startInterfaz(); se instancia en el tercer frame del fla.

clase Song:

Código :

package{
   public class Song{
     
     public var aTrackNumber:uint;
     public var aArtist:String;
     public var aTrackName:String;     
   }   
}


clase Interfaz:

Código :

package {
   import flash.display.*;
   import flash.events.*;

   public class Interfaz extends MovieClip {     

     public function Interfaz() {

       trace(Main.songList[0].aTrackNumber);
       //NO LOGRO HACER TRACE DE LOS DATOS DEL ARRAY songList 

     }

   }
}


Saludos.

Por ganoncl

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 May 2009 06:58 am
Como tu Clase "Interfaz" extiende de un DisplayObject (Vale, realmente de MovieClip que a su vez extiende de DisplayMovie), UNA VEZ AÑADIDO al Stage, puedes usar "parent" después de hacer una conversión de cast

Código ActionScript :

trace(MovieClip(parent).songList[0].aTrackNumber);

Echalé un vistazo a este post

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 May 2009 01:33 pm
Me arroja el siguiente error:

TypeError: Error #1009: Cannot access a property or method of a null object reference.

Por ganoncl

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 May 2009 03:34 pm
porque no puedes leerlo hasta que no lo añadas al STAGE. Vamos en un evento ADD_TO_STAGE
-en el post que indiqué (sé que es largo), comento cómo es.

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 May 2009 04:15 pm
Y si hago esto por ejemplo??
Ver cambio en la definicion del constructor de la clase interfaz, como se pasa el array completo como parametro desde el Main.
El problema es que aún asi cuando hago el trace me tira el error:
TypeError: Error #1010: A term is undefined and has no properties.

A continuación el codigo:

clase Main:

Código :

package {
   import flash.display.*;

   public class Main extends MovieClip {

     public var songList:Array = new Array();

     public function Main() {
       creaSongList();
     }

     public function creaSongList() {

       for (var i=0; i<5; i++) {
         var objSong:Song = new Song();
         objSong.aTrackNumber=i;
         objSong.aArtist="artista"+i;
         objSong.aTrackName="cancion"+i;

         songList.push(objSong);
       }
     }
      public function startInterfaz() {  //Este se instancia en el tercer frame del fla.
         var gui:Interfaz= new Interfaz(songList); //cambio
         addChild(gui);
      }
   }
}

startInterfaz(); se instancia en el tercer frame del fla.

clase Song:

Código :

package{
   public class Song{
     
     public var aTrackNumber:uint;
     public var aArtist:String;
     public var aTrackName:String;     
   }   
}


clase Interfaz:

Código :

package {
   import flash.display.*;
   import flash.events.*;

   public class Interfaz extends MovieClip {     

     public function Interfaz(arreglo:Array) {

       trace(arreglo[0].aTrackNumber);
       //NO LOGRO HACER TRACE DE LOS DATOS DEL ARRAY songList 

     }

   }
}


Saludos.

Por ganoncl

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 May 2009 06:02 pm
Te decía que cambiaras la Clase Interfaz a algo como

Código ActionScript :

package {
   import flash.display.*;
   import flash.events.*;

   public class Interfaz extends MovieClip {     

     public function Interfaz() {
          if (stage) init();
     else addEventListener(Event.ADDED_TO_STAGE, init);
     }
     private function init(e:Event = null):void 
     {
          trace(MovieClip(parent).songList[0].aTrackNumber); 
     }
  }
}

No sé qué te puede pasar en tu código corregido, trata de hacer un trace a arreglo, luego a arreglo[0] y luego a arreglo[0].aTrackNumber a ver si vemos dónde falla

Por Eliseo2

710 de clabLevel



 

firefox

 

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