Comunidad de diseño web y desarrollo en internet online

Eventos en clases

Citar            
MensajeEscrito el 05 Dic 2012 09:59 pm
He estado intentando comprobar que fue lo que me consumió mas tiempo la anterior ves que me puse a hacer un juego el cual no termine y deje a la mitad. Me di cuenta que fue el hecho en que no utilize clases y me tarde mucho en elaborar muchas cosas, ahora bien, estoy desarrollando otro juego y e leido esto de las clases, e conseguido entender como poner todo dentro de la clase pero hubo un problema al intentar correrlo y es el hecho en que no se como poner los eventos dentro de las clases, lo que quiero conseguir es que los objetos se muevan y son 5 objetos los cuales quiero mover, pero al momento de ejecutarlo y tratar de checarlo me salen los siguientes errores:


1°Nave.as, Línea 22 1046: No se encontró el tipo o no es una constante en tiempo de compilación: Event.
2°Nave.as, Línea 168 1046: No se encontró el tipo o no es una constante en tiempo de compilación: KeyboardEvent.
3°Nave.as, Línea 205 1046: No se encontró el tipo o no es una constante en tiempo de compilación: KeyboardEvent.


Este es mi codigo bien descrito con sus variables y como podran ver el fin es muy simple, hacer que el objeto principal gire y se mueva solo hacia adelante. Es por eso que necesito del evento de movimiento por medio del teclado:

Código ActionScript :

package 
{

   public class Nave
   {
      // Variables: cu= cuadrado de golpe 1, cu1= cuadrado de golpe 2, cu2= cuadrado de golpe 3, cu3= cuadrado de golpe 4
      // Variables: nave= El jugador de la nave, vn= velocidad de la nave, vr= velocidad de rotacion de la nave,
      // Variables: tg= angulo de rotacion de la nave
      cu.x = nave.x;
      cu.y = nave.y;
      cu2.x = nave.x;
      cu2.y = nave.y;
      cu1.x = nave.x;
      cu1.y = nave.y;
      cu3.x = nave.x;
      cu3.y = nave.y;
      public var tg:Number = nave.rotation;
      public var vn:Number;
      public var vr:Number;
      public var up:Boolean = false;
      public var down:Boolean = false;
      public var left:Boolean = false;
      public var right:Boolean = false;
      public function MovDir(event:Event)
      {
         if (up)
         {
            tg = nave.rotation;
            if (nave.rotation == 0)
            {
               nave.y -=  vn;
               cu.y -=  vn;
               cu1.y -=  vn;
               cu2.y -=  vn;
               cu3.y -=  vn;
            }
            if (nave.rotation == 180)
            {
               nave.y +=  vn;
               cu.y +=  vn;
               cu1.y +=  vn;
               cu2.y +=  vn;
               cu3.y +=  vn;
            }
            if (nave.rotation == -180)
            {
               nave.y +=  vn;
               cu.y +=  vn;
               cu1.y +=  vn;
               cu2.y +=  vn;
               cu3.y +=  vn;
            }
            if (nave.rotation == -90)
            {
               nave.x -=  vn;
               cu.x -=  vn;
               cu1.x -=  vn;
               cu2.x -=  vn;
               cu3.x -=  vn;
            }
            if (nave.rotation == 90)
            {
               nave.x +=  vn;
               cu.x +=  vn;
               cu1.x +=  vn;
               cu2.x +=  vn;
               cu3.x +=  vn;
            }
            if (tg>0 && tg<90)
            {
               for (var i:Number = 1; i <= 90; i++)
               {
                  if (i==tg)
                  {
                     nave.y -=  vn - (i * (vn / 90));
                     nave.x +=  (i * (vn / 90));
                     cu.y -=  vn - (i * (vn / 90));
                     cu.x +=  (i * (vn / 90));
                     cu1.y -=  vn - (i * (vn / 90));
                     cu1.x +=  (i * (vn / 90));
                     cu2.y -=  vn - (i * (vn / 90));
                     cu2.x +=  (i * (vn / 90));
                     cu3.y -=  vn - (i * (vn / 90));
                     cu3.x +=  (i * (vn / 90));
                     i = 89;
                  }
               }
            }
            if (tg>90 && tg<180)
            {
               for (var i2:Number = 91; i2 <= 180; i2++)
               {
                  if (i2==tg)
                  {
                     nave.y +=  ((i2 - 90) * (vn / 90));
                     nave.x -=   -  vn + ((i2 - 90) * (vn / 90));
                     cu.y +=  ((i2 - 90) * (vn / 90));
                     cu.x -=   -  vn + ((i2 - 90) * (vn / 90));
                     cu1.y +=  ((i2 - 90) * (vn / 90));
                     cu1.x -=   -  vn + ((i2 - 90) * (vn / 90));
                     cu2.y +=  ((i2 - 90) * (vn / 90));
                     cu2.x -=   -  vn + ((i2 - 90) * (vn / 90));
                     cu3.y +=  ((i2 - 90) * (vn / 90));
                     cu3.x -=   -  vn + ((i2 - 90) * (vn / 90));
                     i2 = 179;
                  }
               }
            }
            if (tg>-90 && tg<0)
            {
               for (var i3:Number = -1; i3 >=-90; i3--)
               {
                  if (i3==tg)
                  {
                     nave.y -=  vn + (i3 * (vn / 90));
                     nave.x +=  (i3 * (vn / 90));
                     cu.y -=  vn + (i3 * (vn / 90));
                     cu.x +=  (i3 * (vn / 90));
                     cu1.y -=  vn + (i3 * (vn / 90));
                     cu1.x +=  (i3 * (vn / 90));
                     cu2.y -=  vn + (i3 * (vn / 90));
                     cu2.x +=  (i3 * (vn / 90));
                     cu3.y -=  vn + (i3 * (vn / 90));
                     cu3.x +=  (i3 * (vn / 90));
                     i3 = -89;
                  }
               }
            }
            if (tg>-180 && tg<-90)
            {
               for (var i4:Number = -91; i4 >= -180; i4--)
               {
                  if (i4==tg)
                  {
                     nave.y -=  ((i4 + 90) * (vn / 90));
                     nave.x +=   -  vn + (((i4 * -1) - 90) * (vn / 90));
                     cu.y -=  ((i4 + 90) * (vn / 90));
                     cu.x +=   -  vn + (((i4 * -1) - 90) * (vn / 90));
                     cu1.y -=  ((i4 + 90) * (vn / 90));
                     cu1.x +=   -  vn + (((i4 * -1) - 90) * (vn / 90));
                     cu2.y -=  ((i4 + 90) * (vn / 90));
                     cu2.x +=   -  vn + (((i4 * -1) - 90) * (vn / 90));
                     cu3.y -=  ((i4 + 90) * (vn / 90));
                     cu3.x +=   -  vn + (((i4 * -1) - 90) * (vn / 90));
                     i2 = 179;
                  }
               }
            }
            trace("Angulo:" + tg);
         }
         if (left)
         {
            nave.rotation -=  vr;
            cu.rotation -=  vr;
            cu1.rotation -=  vr;
            cu2.rotation -=  vr;
            cu3.rotation -=  vr;
         }
         if (right)
         {
            nave.rotation +=  vr;
            cu.rotation +=  vr;
            cu1.rotation +=  vr;
            cu2.rotation +=  vr;
            cu3.rotation +=  vr;
         }

      }

      public function TPress(event:KeyboardEvent):void
      {
         switch (event.keyCode)
         {
            case Keyboard.UP :
               {
                  up = true;
                  break;





               };
            case Keyboard.LEFT :
               {
                  left = true;
                  break;





               };
            case Keyboard.RIGHT :
               {
                  right = true;
                  break;





            }
         }
      };

      public function TUPress(event:KeyboardEvent):void
      {
         switch (event.keyCode)
         {
            case Keyboard.UP :
               {
                  up = false;
                  break;





               };
            case Keyboard.LEFT :
               {
                  left = false;
                  break;





               };
            case Keyboard.RIGHT :
               {
                  right = false;
                  break;





            }
         }
      };
      nave.addEventListener(Event.ENTER_FRAME, MovDir);
      stage.addEventListener(KeyboardEvent.KEY_DOWN, TPress);
      stage.addEventListener(KeyboardEvent.KEY_UP, TUPress);

      public function Nave()
      {
         // constructor code
      }

   }

}


Grasias por leer y espero y me puedan ayudar :)
Saludos

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome
Citar            
MensajeEscrito el 06 Dic 2012 07:58 am
Wenas

Ese fallo ocurre cuando no importas las clases


package {
import flash.events.Event;
import flash.events.KeyboardEvent;

public class ...

Por Flasheroas3

22 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Dic 2012 01:20 am
:o te agradezco enormemente tu apoyo, ya funciono pero ahora me topo con otros problemas de las variables no definidas, me podrías decir donde encuentro un tutorial que me permita saber como puedo agregar una clase que controle un objeto en un proyecto as3, me refiero a que quiero intentar poner este código en un proyecto y cuando lo intento poner de la siguiente manera, no me funciona:

var Nave1 = new Nave();

y es que la clase esta en la misma carpeta que el proyecto pero simplemente no se como ponerlo, me salen como 100 errores de variables como cu, cu1, etc. que son los nombres de las instancias de los objetos que estoy tomando para realizar las acciones con el teclado.

De antemano gracias por tu apoyo, ya se soluciono el problema anterior, te agradecería que me orientaras un poco ;).
Saludos

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome
Citar            
MensajeEscrito el 07 Dic 2012 03:32 pm
Necesitas un buen repasito de como trabajar con clases, pregunta a san Google que hay mucha info al respecto.

Trabajar con clases al principio es complicado pero cuando le pillas el rollete mola, te pongo un ejemplo sencillo de rotación de un objeto.

Código :

package com.movimiento {   

import flash.events.Event;
import flash.display.DisplayObject;

public class Rotacion {   

private var _angulo:Number;
private var _radio:Number;
private var _velocidadR:Number;
private var _objeto:DisplayObject;

public  function Rotacion(objeto:DisplayObject, angulo:Number, radio:Number, velocidadR:Number) {

_objeto= objeto;
_angulo= angulo;
_radio= radio;
_velocidadR= velocidadR;
_objeto.addEventListener(Event.ENTER_FRAME, onEnterFrame);

}

private function onEnterFrame(event:Event):void {
   
_objeto.x = 360 + Math.cos(_angulo) * _radio;
_objeto.y = 270 + Math.sin(_angulo) * _radio;
_angulo += _velocidadR;
}
}
}


Supongamos que quieres llamar a la clase Rotacion desde tu clase principal.

Código :

package  {
   import flash.display.Sprite;
   import com.movimiento.Rotacion;
         
   public class Main extends Sprite {      
      
      private var _rotacion:Rotacion;   //          
            
   public function Main() {
      
       var spr:Sprite = new Sprite();           
            spr.graphics.beginFill(0xFF6600, 1);           
            spr.graphics.drawCircle(200,50,10);           
            spr.graphics.endFill();
            addChild(spr);
         
            _rotacion= new Rotacion(spr,100,22,0.2);          
   }


Espero que te ayude , animo :wink:

Por Flasheroas3

22 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Dic 2012 04:49 pm
gracias, seguiré checando esto de las clases y tratare de comprender lo mejor, gracias por la ayuda.
:) saludos

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome

 

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