Comunidad de diseño web y desarrollo en internet online

error 1051

Citar            
MensajeEscrito el 11 Abr 2012 03:59 pm
Buenas tardes! me gustaría saber si en as3 hay alguna manera de llamar a diferentes clases de la misma manera sabiendo que si se carga una, la otra no se va a cargar. Os dejo mi ejemplo (así da error 1051):

Código ActionScript :

switch (resp)
{
   case true :
      var Fichas:cargarFichas = new cargarFichas();
      addChild(Fichas);
      break;

   case false :
      var Fichas:cargarFichasEliminar = new cargarFichasEliminar();
      addChild(Fichas);
      break;
}


Sé que llamando simplemente a una Fichas1 y a otra Fichas2 el error se corrige, pero quiero que tengan el mismo nombre ya que luego uso la variable Fichas, independientemente de cuál de las 2 sea, en el resto del programa. y si les tengo que llamar a cada una de una forma diferente tendría que duplicar el código con cada una de las variables (algo inútil ya que solo se emplea uno..).

Muchas gracias de antemano.

Por aran89

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Abr 2012 04:11 pm
Eso es un problema muy interesante de la teoría de objetos y tiene una solución muy estandarizada (porque el problema es típico de lenguajes tipados) y se llama interface
Una interface define métodos que debe implementar una clase y a su vez sirve para darle una identidad global a un grupo de clases. Yendo a la simplificación didáctica con animales sería

Código ActionScript :

package {
  public interface IAnimal {
    function come(comida:uint):void;
    function camina(distancia:uint):void;
  }
}


Luego defino dos clases que implementan IAnimal (esto quiere decir que deben tener el método come y camina, sino da error de compilación)

Código ActionScript :

package animales{
   public class perro implements IAnimal{

     (... omito el codigo de la clase, solo recordar que debe existir el método comer y caminar ...) 

  }
}

package animales{
   public class gato implements IAnimal{

     (... omito el codigo de la clase, solo recordar que debe existir el método comer y caminar ...) 

  }
}


Ok ahora tengo dos clases, perro y gato que implementan IAnimal. Pero dentro de mi clase donde las utilizo, no las puedo llamar de la misma forma porque me da error de compilación. ¿Que puedo hacer? Hago un cast de la Interfaz

Código ActionScript :

var animal:IAnimal;
switch (resp)
{
   case true :
      animal = new perro();
      break;

   case false :
      animal = new gato();
      break;
}
      addChild(animal);


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Abr 2012 04:15 pm
Muchas gracias por la rápida contestación. Lo estudio y si tengo algún problema os comento.
Sois geniales!!!

Por aran89

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 04:27 pm
Hola de nuevo. probando lo que me digiste tengo un pequeño problema.
Mis clases eran extensión de MovieClips por lo que en la definición de clase he puesto lo siguiente:

Código ActionScript :

public class gato  extends MovieClip implements IAnimal

esto no da error sino pongo addChild pero cuando pongo addChild(animal) no funciona.. ¿Cómo se puede solucionar?

Por aran89

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 04:32 pm
¿Que error da? ¿El mismo?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Abr 2012 04:35 pm
Me da el siguiente error:
1067: Conversión implícita de un valor de tipo IAnimal a un tipo flash.display:DisplayObject no relacionado

Por aran89

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 04:35 pm
este error se refiere a la línea donde se encuentra el addChild(animal)

Por aran89

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 05:26 pm
Intenta con un cast

addChild(animal as MovieClip)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Abr 2012 05:32 pm
Ahora si funciona!!!! :wink: Muchas gracias por todo!
Un saludo.

Por aran89

21 de clabLevel



 

chrome

 

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