Comunidad de diseño web y desarrollo en internet online

Pasar juego que diseñe en AS2 a AS3

Citar            
MensajeEscrito el 29 Abr 2013 01:09 am
Hola a todos...

Bueno tengo un gran problema, resulta que vengo de programar en AS2 un juego que lo estoy desarrollando hace casi un año ya, hasta que luego me enteré que AS2 se volvió obsoleto. He leído tutoriales de AS3 y me cuesta demasiado, pero el problema es que quiero continuar con el juego que venía creando en AS2, pero solamente quiero convertir el código escrito en AS2 a AS3. ¿Alguien puede ser tan amable de ayudarme con esto?.


Mi juego es una porquería, lo sé!!, pero la idea era aprender lo básico de videojuegos, las colisiones, movimientos del personaje, rotaciones y demás, lo logré hacer en AS2, pero no tengo la más remota idea de como pasar todo el código creado en AS2 a AS3... por favor, necesito que alguien me ayude en esto para poder continuar con mi juego.


Este es el juego creado por mí. Con las flechas mueven al movieclip "tank", que en realidad es un avión (olvide cambiarle el nombre)... cuando el enemigo avanza y se choca contra el suelo o pasto este se eleva, y cuando encuentra una pendiente la sube y luego baja por la gravedad, si movemos el puntero del mouse movemos nuestra mira "crosshair", si hacemos click izquierdo dispara una munición "cannonball", si la bala colisiona contra nuestro enemigo explota y se elimina el movieclip dónde se reinicia su posición y se crea nuevamente. cuando el enemigo llega a la posición this._x==-350, el enemigo nos dispara, si la bala nos impacta, ésta reproduce una explosión en nuestro personaje.


Código del juego:

Código :

Mouse.hide();
gravedad = 0; 
fired = 0; 
max_firepower = 2; 
place_enemy();
attachMovie("crosshair", "crosshair", 1); //Coloca la mira en la escena
attachMovie("tank","tank",2,{_x:400, _y:100});  /*Coloca el avión, osea nuestro personaje en escena (puse "tank", pero es un avión*/
attachMovie("ground", "ground", 3, {_x:100, _y:100}); /*Coloca el pasto donde se desplazará nuestro enemigo*/
crosshair.onEnterFrame = function() {
   this._x = _xmouse;
   this._y = _ymouse;
};
tank.onEnterFrame = function() {
   
    mousex = _xmouse-this._x;
   mousey = (_ymouse-this._y)*-1;
   angle = Math.atan(mousey/mousex)/(Math.PI/180);
   if (mousex<0) {
      angle += 180;
   }
   if (mousex>=0 && mousey<0) {
      angle += 360;
   }
   /*if (angle>160) {
      angle = 160;
   }
   if (angle<0) {
      angle = 0;
   }*/
   /*Controla que las flechas de nuestro teclado estén presionadas para darle movimiento al avión*/
 if (Key.isDown(Key.LEFT))
      {
            tank._x -= 7;
         }
         
      else if (Key.isDown(Key.RIGHT))
      {
                     tank._x += 7;
         }
      else if (Key.isDown(Key.DOWN))
      {
                              tank._y += 7;
         }
               
      else if (Key.isDown(Key.UP))
      {
                     tank._y -= 7;
         }
               
      

   firepower = Math.sqrt(mousex*mousex+mousey*mousey);
   if (firepower>200) {
      firepower = 200;
   }
   this.cannon._rotation = angle*-1;
};
function onMouseDown() {
   if (fired<max_firepower) {
      fired++; 
      angle = tank.cannon._rotation-1;
      start_ball_x = tank._x+10*Math.cos(angle*Math.PI/180);
      start_ball_y = tank._y+10*Math.sin(angle*Math.PI/180);
          
        
      cannonball_fired = attachMovie("cannonball", "cannonball_"+_root.getNextHighestDepth(), _root.getNextHighestDepth(), {_x:start_ball_x, _y:start_ball_y});
      cannonball_fired.dirx = Math.cos(angle*Math.PI/180)*firepower;
      cannonball_fired.diry = Math.sin(angle*Math.PI/180)*firepower;
      cannonball_fired.onEnterFrame = function() {
         this.diry += gravedad;
         this._x += this.dirx/30;
         this._y += this.diry/30;
         if ((this._y>700) or (ground.hitTest(this._x, this._y, true))) {
      attachMovie('explosion', 'explosion',6,{_x:this._x, _y:this._y})
            this.removeMovieClip();
            fired--;
         }
         if (enemy.hitTest(this._x, this._y, true)) {
            this._x=equis;
            this._y=igriega;
            attachMovie('explosion', 'explosion',0,{_x:this._x, _y:this._y})
            this.removeMovieClip();
            enemy.removeMovieClip();
            fired--;
            place_enemy();
         }
      };
   }
}
/*Coloca a nuestro enemigo en las posiciones determinadas*/
function place_enemy() {
   enemy_placed = attachMovie("enemy", "enemy", _root.getNextHighestDepth(), {_x:-100, _y:230});
   enemy_placed.yspeed = 0;
   
   
   enemy_placed.onEnterFrame = function() {
      this.yspeed += gravedad/10;
      this._x++;
      angle = tank.cannon._rotation-1;
      
      while (_root.ground.hitTest(this._x+this._width/2, this._y+this._height, true)) {
         this._y--;
         this.yspeed = 0;
      }
      
      if (!_root.ground.hitTest(this._x+this._width/2, this._y+this._height+1, true)) {
         this._y += this.yspeed;
      } else {
         this.yspeed = 0;
      }
      
      if (this._x>500) {
         this.removeMovieClip();
         place_enemy();
      }
      
      if (this._x==-350) {
         rocket_placed = attachMovie("cannonball", "cannonball",_root.getNextHighestDepth(),{_x:-300, _y:350});
         rocket_placed.onEnterFrame = function() {
         
         angle2=55*-1;
         rocket_placed.dirx = Math.cos(angle2*Math.PI/180)*firepower;
      rocket_placed.diry = Math.sin(angle2*Math.PI/180)*firepower;
      this._x += this.dirx/30;
         this._y += this.diry/30;
         //angle = enemy.cannon2._rotation-1;
         //this.cannon2._rotation = angle*-1;
         if (tank.hitTest(this._x, this._y, true)) {
            this._x=equis;
            this._y=igriega;
            attachMovie('explosion', 'explosion',7,{_x:this._x, _y:this._y})
            this.removeMovieClip();
            //tank.removeMovieClip();
            //fired--;
            
         }
         
         }
      }
      
   };
   
   
   
}

Por Novato2013

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Abr 2013 03:22 pm
Ya que le dedicaste un ano a armar este juego, porque no intentas pasarlo tu mismo a AS3 .... digo, a menos que quieras quedarte obsoleto tu mismo, seria bastante mas util que tu lo hicieras y de paso aprendieras en el pasaje ... o acaso hay algun apuro?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 30 Abr 2013 12:18 am

solisarg escribió:

Ya que le dedicaste un ano a armar este juego, porque no intentas pasarlo tu mismo a AS3 .... digo, a menos que quieras quedarte obsoleto tu mismo, seria bastante mas util que tu lo hicieras y de paso aprendieras en el pasaje ... o acaso hay algun apuro?

Jorge

Si, probablemente, bueno me voy a tener que romper la cabeza intentando descular AS3.

Por Novato2013

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Abr 2013 02:12 am
Considera que AS3 salió a fines de 2006 ... lleva entonces unos 6 años ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 30 Abr 2013 12:43 pm

solisarg escribió:

Considera que AS3 salió a fines de 2006 ... lleva entonces unos 6 años ;)

Jorge


No entiendo que me queres decir con eso Jorge, de que lleva 6 años AS3..

Por Novato2013

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Abr 2013 01:43 pm
BuenAS:

Pues, imagino, que quiere decirte que Flash Player ha cambiado mucho desde la versión 8 (la última antes de aparecer ActionScript 3).

Una serie de cosas que han pasado desde entonces:

Por lo pronto, un Flash desarrollado en AS2 se ejecuta en la AVM1 y otro en AS3 en la AVM2 que es mucho más rápida.

No vas a poder mostrar vídeo H.264 (mp4), que apareció en Flash Player 9.0.115

No vas a poder mover objetos en 3D, que apareció en FP 10.

No vas a poder utilizar motores 3D que utilizan el Stage3D que apareció en FP11

No vas a poder crear aplicaciones para Android o iOS.

...bueno, ya me he cansado :)

Como dice Jorge, ¿no crees que sería más práctico, pensando en el futuro, que empezaras directamente con AS3? ;)

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Abr 2013 01:46 pm

Lukánicos escribió:

BuenAS:

Pues, imagino, que quiere decirte que Flash Player ha cambiado mucho desde la versión 8 (la última antes de aparecer ActionScript 3).

Una serie de cosas que han pasado desde entonces:

Por lo pronto, un Flash desarrollado en AS2 se ejecuta en la AVM1 y otro en AS3 en la AVM2 que es mucho más rápida.

No vas a poder mostrar vídeo H.264 (mp4), que apareció en Flash Player 9.0.115

No vas a poder mover objetos en 3D, que apareció en FP 10.

No vas a poder utilizar motores 3D que utilizan el Stage3D que apareció en FP11

No vas a poder crear aplicaciones para Android o iOS.

...bueno, ya me he cansado :)

Como dice Jorge, ¿no crees que sería más práctico, pensando en el futuro, que empezaras directamente con AS3? ;)

Un saludo.


Ok, gracias, estoy empezando a ver los ejemplos de adobe.

Por Novato2013

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Abr 2013 06:21 pm
BuenAS:

Pues nada, ánimo ;) A mí siempre me ha parecido más fácil AS3 que AS2. Y tampoco ha cambiado tanto:

Las propiedades en AS2 iban en muchos casos precedidas de un guión bajo (_); ahora ese guión bajo ha desaparecido: _x pasa a ser directamente x, por ejemplo.

En AS3 hay una sola forma de añadir listener de eventos: addEventListener.

Para crear instancias (añadir un símbolo que tengas en la biblioteca, por ejemplo):

Código ActionScript :

var simbolo:MovieClip = new Simbolo();
addChild(simbolo);

Si en tu biblioteca tienes un símbolo exportado para AS llamado Simbolo

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome

 

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