Comunidad de diseño web y desarrollo en internet online

Llamado a una clase desde un .fla

Citar            
MensajeEscrito el 05 Ago 2012 12:40 am
Buenas, tengo un problema instanciando una clase en un archivo .fla para un videojuego que estoy haciendo, resulta que tengo una clase Bomba1 la cual tiene unos parámetros y comportamientos como al hacer click que desaparece, etc. Quisiera que al instanciarla en el archivo .fla este comportamiento "se active" por decirlo así, soy nuevo en esto de AS3 espero no esté todo tan mal hehe.

Código ActionScript :

package 
{
   import flash.events.MouseEvent;
   import flash.events.Event;
   import flash.display.MovieClip;
   import flash.display.Stage;

   public class Bomba1 extends MovieClip
   {

      /*En esta parte empiezo a definir el comportamiento, la idea es que las "Bombas" aparezcan y caigan, es un juego el objetivo es no dejar que estas bombas lleguen al suelo (aunque no he definido lo que hacen cuando llegan) y al hacerseles click se desaparecen, sumando 10 puntos al jugador*/

      public function bombaComportamiento()
      {//Esta variable y condicional se utilizan para definir una probabilidad basadas en un número de referencia para decidir si sale otra instancia de las Bombas en una posición Random en el eje X, a su vez el parámetro Y tiene un valor inicial de 0.
         var probabilidad:int = Math.random() * 5; 
         if (probabilidad <= 3)
         {
            addChild(this);
            this.x = Math.random() * 400;
            this.y = 0;
         }

         this.addEventListener(MouseEvent.CLICK, desaparecer); //Evento que elimina la instancia con un Click.
         function desaparecer(adios:MouseEvent)
         {
            removeChild(this);
         }

         stage.addEventListener(Event.ENTER_FRAME, movimiento); //Este evento hace que las Bombas bajen 5 pixeles por cada fotograma transcurrido.
         function movimiento(abajo:Event):void
         {
            this.y +=  5;
         }

      }//Bomba1
   }//class
}//Package


Ok ahora el archivo .fla es tiene el siguiente código:

Código ActionScript :

*/Se empiezan a declarar el nombre de instancia de la clase Bomba1() con el nombre de bomb que es un MC, a su vez se instancia otro MC, es un suelo que al llegar las Bombas a él estas desaparecen.*/

var bomb:MovieClip = new Bomba1();
var ciudad:MovieClip = new suelo  ;
addChild(ciudad);
ciudad.y = 350;

var puntuacion:int = 0;

//Por último agrego una variable Timer y la inicio, luego llamo a la instancia de "bomb" dentro de un evento TimerEvent, la idea es que cuando pase un segundo en la aplicación se ejecuten las funciones dentro de la clase pero sólo se genera un hijo de Bomba1 sin hacer nada, sin caer ni desaparecer con el click, nada, también probé con bomb.bombaComportamiento() pero ni aparece la instancia en el stage si quiera.

var timer:Timer = new Timer(1000,60);
timer.start();
timer.addEventListener(TimerEvent.TIMER, tiempoJuego);

function tiempoJuego(e:TimerEvent)
{
   trace("asd")
   addChild(bomb);
}

//Evento que remueve la instancia de Bomba1 cuando esta hace contacto con el MC "ciudad".
if (bomba.hitTestObject(ciudad))
{
removeChild(bomba);
}


Mi duda está en qué estoy haciendo mal para poder vincular la clase, sus parámetros y comportamientos al .fla, por cierto ya lo había hecho todo in-line y funciona a la perfección, miren lo que deseo lograr, pero esta vez utlizando clases porque cambiaré los gráficos, además serán distintos tipos de bombas con diferentes efectos (movimiento, etc) y escenarios, la verdad soy nuevo trabajando con AS3 (con programación en general) quisiera que me dijeran qué estoy haciendo mal, muchísimas gracias de ante mano :)

http://www.mediafire.com/?k9kq4m4p07qtsf <<< EJEMPLO DE RESULTADO FINAL DESEADO

Por DaveyDsign

6 de clabLevel



Genero:Masculino  

Diseño Gráfico

chrome
Citar            
MensajeEscrito el 06 Ago 2012 12:48 pm
La probabilidad para que se agregue al displaylist no es una l{ogica que deba ir dentro de la bomba, sino fuera, quizás en un manager de bombas u otra clase de sentido general.
Quitando eso, pon algo así

Código ActionScript :

public function Bomba1(){
   this.addEnevtListener(Event.ADDED_TO_STAGE, bombaComportamiento)
}
private function bombaComportamiento(evt:Event){
  ....


Para asegurarte que un metodo corra en una clase usa el Constructor, es decir un método que tiene el mismo nombre de la clase y que se llama automáticamente al instanciarse

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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