Comunidad de diseño web y desarrollo en internet online

Primeros pasitos en AS3

Citar            
MensajeEscrito el 05 Jul 2010 06:04 pm
Muy buenas, tal y como dice el título del post, estoy dando mis primeros pasitos en AS3, y por ahora todo bien, hasta que me he encontrado con un error del que no encuentro solución "googleando", supongo que si insisto encontraré algo, pero si mientras tanto alguien me puede echar una mano, pues mucho mejor...

Bueno, esto es lo que me pasa:

He creado la clase "Vuelo", la cual está incluida en el package "Clases_easyJet", y al intentar acceder al método "Matriz_ordenada" de dicha clase:

Código ActionScript :

import Clases_easyJet.Vuelo;

var Flight:Vuelo = new Vuelo();
var Gru:Array = new Array();

Gru = Flight.Matriz_ordenada();//Matriz que almacena los vuelos
...


me devuelve el error:

Código :

TypeError: Error #1010: Un término no está definido y no tiene propiedades.
   at index_fla::MainTimeline/frame1()


Previamente, me devuelve únicamente el primer elemento de la matriz mediante un bucle for del programa principal, el cual se supone ha de recorrer los 30 elementos de la matriz "Gru"


Este es el código de la función "Matriz_ordenada" dentro del archivo Vuelo.as:

Código ActionScript :

[...]
public function Matriz_ordenada():Array
      {
         var Matriz:Array = new Array();
         Matriz = Vuelos_aleatorios(30);//Vuelos_aleatorios declarada previamente como private
         Matriz.sort(Ordena_grupo);//Ordena_grupo declarada previamente como private
         return Matriz;
      }


Supongo que será un error en la declaración del tipo de función y/o variables (public-private-static...), pero no doy con ello...

Gracias a todos por adelantado!

Por si sirve de algo, y para no meterlo todo enmedio del post, adjunto el código de Vuelos.as completo:
package Clases_easyJet

Código ActionScript :

{
   public class Vuelo
   {

      public function Vuelo():void
      {
      }
      //Propiedades de la Clase "Vuelo"
      public var Cias:Array = new Array("EZY","EZS");
      public var Cia:String = new String();
      public var In:int = new int();
      public var STA:Date = new Date();
      public var Out:int = new int();
      public var STD:Date = new Date();

      //Función privada que genera una matriz de elementos "Vuelo" aleatoria desordenada.
      private function Vuelos_aleatorios(Cantidad:int):Array
      {
         for (var num:int = 0; num<Cantidad; num++)
         {
            //Creación de la instancia "Vuelo"
            var Fl:Vuelo = new Vuelo();

            //Creación de la instancia de "Array"
            var Grupo:Array = new Array();

            //Porcentaje Cía de vuelos (80% EZY, 20% EZS)
            var Id_cia:int = Math.floor(Math.random() * 11);
            if (Id_cia < 9)
            {
               Id_cia = 0;
            }
            else
            {
               Id_cia = 1;
            }

            //Definición de variables aleatorias
            var Vuelo_in:int = Math.floor(Math.random()*(8999))+1000;
            var Vuelo_out:int = Vuelo_in + 1;
            var H_in:int = Math.floor(Math.random() * 23);
            var H_out:int = H_in;
            //Procedimiento para establecer los minutos en múltiplos de 5
            var M_in:int = Math.floor(Math.random() * 11) * 5;
            //Procedimiento para establecer la salida a STA+35 min.
            var M_out:int = M_in + 35;

            //Arreglo minuto 59 Out
            if (M_out > 59)
            {
               M_out -=  60;
               H_out +=  1;
               if (H_out == 24)
               {
                  H_out = 0;
                  Fl.STD.setDate(+1);
               }
            }

            //Asignación de datos a la instancia de "Vuelo"
            Fl.Cia = Fl.Cias[Id_cia];
            Fl.In = Vuelo_in;
            Fl.Out = Vuelo_out;
            Fl.STA.setHours(H_in,M_in,0,0);
            Fl.STD.setHours(H_out,M_out,0,0);

            //Asignación de la instancia de "Vuelo" a la matriz "Grupo"
            Grupo[num] = Fl;

            //trace(Arregla_tiempo(i+1),Fl.Cia+Fl.In,HI+":"+MI+"-"+HO+":"+MO,Fl.Cia+Fl.Out);


         }
         //Se devuelve la matriz con los vuelos aleatorios
         return Grupo;
      }

      //Función privada para el criterio de orden de la función Array.sort();
      private function Ordena_grupo(Va:Vuelo, Vb:Vuelo):Number
      {
         var Va_HI:Number = Va.STA.getHours();
         var Va_MI:Number = Va.STA.getMinutes();
         var Vb_HI:Number = Vb.STA.getHours();
         var Vb_MI:Number = Vb.STA.getMinutes();

         if (Va_HI > Vb_HI)
         {
            return 1;
         }
         else if (Va_HI < Vb_HI)
         {
            return -1;
         }
         else
         {
            if (Va_MI > Vb_MI)
            {
               return 1;
            }
            else if (Va_MI < Vb_MI)
            {
               return -1;
            }
            else
            {
               return 0;
            }
         }
      }

      //Función pública: Generar una matriz de elementos "Vuelo" aleatoria ordenada por STA.
      public function Matriz_ordenada():Array
      {
         var Matriz:Array = new Array();
         Matriz = Vuelos_aleatorios(30);
         Matriz.sort(Ordena_grupo);
         return Matriz;
      }
   }
}

Por isarciat

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Jul 2010 07:14 pm
Bueno, ya lo he solucionado, y no tenía nada que ver con el ámbito de las funciones.

Por si alguien lo había leído y le interesa, el error es que en la función privada "Vuelos_aleatorios" de Vuelos.as, la declaración de la variable array "Grupo" debía efectuarse antes del bucle for y no dentro. Por este motivo la matriz únicamente disponía de un elemento y en el bucle for del programa principal se intentaba acceder más allá.

Gracias a todos, de todas formas!

Por isarciat

2 de clabLevel



 

firefox

 

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