Comunidad de diseño web y desarrollo en internet online

Varios MovieClips, misma clase :-S

Citar            
MensajeEscrito el 08 Feb 2008 09:19 pm
Muy buenas; digamos que tengo varios clips de película en mi biblioteca, pero tienen todos una estructura similar, sólo cambian los colores o algunas formas. Y quería escoger dos de ellos, llevarlos al escenario y asignarles la misma clase, ya que ambos se comportan igual. ¿Es eso posible?

Por Juanlu_001

Claber

690 de clabLevel

6 tutoriales

 

firefox
Citar            
MensajeEscrito el 10 Feb 2008 01:53 pm

Por llops

294 de clabLevel

1 tutorial

 

Barcelona

firefox
Citar            
MensajeEscrito el 10 Feb 2008 02:14 pm
Lo que puedes hacer es que esas dos clases extiendan de la misma clase.

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 10 Feb 2008 03:17 pm
Entonces, si en vez de clase base flash.display.MovieClip pongo otra, ¿no tengo ningún conflicto con la utilización de los métodos propios de un MC ni nada por el estilo?

Por Juanlu_001

Claber

690 de clabLevel

6 tutoriales

 

firefox
Citar            
MensajeEscrito el 10 Feb 2008 03:35 pm
Ajá, muchas gracias llops ya he leido el artículo en tu blog (el caso es que me lo encontré anteayer buscando en Google, pero no leí la solución :-P). Ahora sólo tengo un problema: has solucionado en parte mi duda: puedo tener varios MC con la misma clase, pero si ahora quiero instanciarlos desde código, ¿cómo debo hacerlo? Imagínate que tengo dos MC con clase base clases.Personaje y con clase player1 y player2 respectivamente, que corresponden con nombres de símbolo.

Por Juanlu_001

Claber

690 de clabLevel

6 tutoriales

 

firefox
Citar            
MensajeEscrito el 10 Feb 2008 05:48 pm

Juanlu_001 escribió:

...pero si ahora quiero instanciarlos desde código, ¿cómo debo hacerlo?


Sólo tienes que instanciarlas como si crearas cualquier objeto de una clase, mediante new:

Código :

var miNuevaClase = new NuevaClase()

Recuerda luego añadirla a la lista de visualización mediante addChild.

Un saludo

Por llops

294 de clabLevel

1 tutorial

 

Barcelona

firefox
Citar            
MensajeEscrito el 11 Feb 2008 02:36 pm
No me funciona :S

Si pudieras ayudarme... Te expondré tal y como tengo los archivos.

Antes tenía un archivo prueba.fla con un símbolo en la biblioteca tal que:

nombre: player
clase: clases.Personaje
clase base: flash.display.MovieClip

El código de la clase Personaje es el siguiente:

Código :

package clases
{
   import flash.display.*;
   import flash.events.KeyboardEvent;
   import flash.utils.Timer;
   import flash.events.TimerEvent;
   import flash.ui.Keyboard;

   //Declaración de la clase

   public class Personaje extends MovieClip
   {
      public var vida:Number = 100;
      private var vel:Number = 0;
      private var vel_ini:Number = .4;
      private var tope_izq:Number = 100;
      private var tope_der:Number = 450;

      //Función constructora

      public function Personaje()
      {
         var timer:Timer = new Timer(1, 0);
         timer.addEventListener(TimerEvent.TIMER, Mover);
         timer.start();
      }
      //Funciones para la dirección
      public function TeclaUp(event:KeyboardEvent)
      {
         vel = 0;
      }
      public function TeclaDown(event:KeyboardEvent)
      {
         if (event.keyCode == Keyboard.RIGHT)
         {
            vel = vel_ini;
         }
         if (event.keyCode == Keyboard.LEFT)
         {
            vel = -vel_ini;
         }
      }
      //Función para el movimiento
      public function Mover(event:TimerEvent)
      {
         if (this.x <= tope_der && this.x >= tope_izq)
         {
            this.x += vel;
         }
         if (this.x > tope_der)
         {
            this.x = tope_der;
         }
         if (this.x < tope_izq)
         {
            this.x = tope_izq;
         }
      }

   }
}


El archivo prueba.fla tenía la siguiente clase de documento en clases.Main:

Código :

package clases
{
   import flash.display.*;
   import flash.events.KeyboardEvent;
   import flash.ui.Keyboard;

   //import clases.Personaje;

   public class Main extends MovieClip
   {

      public var player:Personaje;
      public var player_x:Number;
      public var player_y:Number;

      public function Main(player_x:Number = 150, player_y:Number = 200)
      {
         player = new Personaje();
         player.x = player_x;
         player.y = player_y;
         addChild(player);

         stage.addEventListener(KeyboardEvent.KEY_DOWN, player.TeclaDown);
         stage.addEventListener(KeyboardEvent.KEY_UP, player.TeclaUp);
      }
   }
}


Este archivo funcionaba perfectamente: estando el escenario vacío al principio, al iniciar la reproducción de la película un nuevo MovieClip se añadía a esta y desempeñaba sus funciones con normalidad.

Ahora tengo un archivo prueba2.fla y dos clips de película con las siguientes características:

Clip 1
nombre: player1
clase: player1 (esta clase no existe)
clase base: clases.Personaje

Clip 2
nombre: player2
clase: player2 (esta clase no existe)
clase base: clases.Personaje

Y el caso es que si los coloco en el escenario por el procedimiento habitual funcionan a las mil maravillas, pero a la hora de instanciarlos mediante código (algo parecido a lo que hacía con la clase Main del archivo prueba.fla) no sucede nada. ¿Podrías solucionarme este problema? :S

Por Juanlu_001

Claber

690 de clabLevel

6 tutoriales

 

firefox
Citar            
MensajeEscrito el 11 Feb 2008 02:46 pm
Eureka!!! :D

Tan sólo cambié estas líneaa:

Código :

public var player:Personaje;
[...]
player = new Personaje();


por

Código :

public var player_1:player1;
[...]
player_1 = new player1();


Gracias!!!!!

Por Juanlu_001

Claber

690 de clabLevel

6 tutoriales

 

firefox
Citar            
MensajeEscrito el 11 Feb 2008 05:35 pm
Me alegra que lo hayas solucionado. :)
Como has podido comprobar, tienes que instanciar la clase del objeto, no la clase base.

Saludos!

Por llops

294 de clabLevel

1 tutorial

 

Barcelona

firefox

 

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