por Guilherme Moschen em 30/08/2007 as 00:48

Como prometido e relembrado pela Fabiane, a série FlyGuy voltou.
Lembrando, agora ele será desenvolvido em AS3.

Primeiramente vamos relembrar aonde eu parei. No último post, eu mostrei como é simples o gerenciamento da animação de movimento do personagem principal. Afinal basta verificar quando os direcionais estão pressionados e dar play na animação e quando for o direcional esquerda, tem que inverter o MovieClip e dar o mesmo play. Isso para que o FlyGuy não imite o nosso querido Michael Jackson e ande de costas.
Vamos ao código AS3:

Actionscript:
  1. package {
  2.  
  3. import flash.display.Sprite;
  4. import flash.events.Event;
  5. import flash.ui.Keyboard;
  6. import com.cubagames.flyguy.FlyGuy;
  7. import com.cubagames.util.Key;
  8.  
  9. public class Main extends Sprite{
  10.  
  11. public static var POSICAO_PARA_ANDAR:Number = 190;
  12.     public static var LARGURA = 500;
  13.     public static var ALTURA = 300;
  14.     private var flyGuy:FlyGuy;
  15.     private var rua:Rua;
  16.  
  17.    
  18.     public function Main():void {
  19.        
  20.         // Cria e configura o FlyGuy
  21.         this.flyGuy = new FlyGuy();
  22.         this.flyGuy.x = 100;
  23.         this.flyGuy.y = 190;
  24.        
  25.         // Cria e configura a Rua
  26.         this.rua = new Rua();
  27.         this.rua.x = -1021;
  28.         this.rua.y = 151;
  29.        
  30.         // Adiciona os MovieClips no contexto principal
  31.         this.addChild(rua);
  32.         this.addChild(flyGuy);
  33.        
  34.         // Configura o Classe Key com o stage, que seria o container todo o swf. O nosso antigo _root
  35.         Key.initialize(stage);
  36.         // Adiciona o evento
  37.         stage.addEventListener( Event.ENTER_FRAME, this.enterFrame );
  38.     }
  39.        
  40.     private function enterFrame( event:Event ) {
  41.        
  42.         if ( Key.isDown(Keyboard.LEFT) ) {
  43.             this.flyGuy.scaleX = -Math.abs(this.flyGuy.scaleX);
  44.             this.flyGuy.play();
  45.             if ( this.flyGuy.x>= 80 )
  46.                 this.flyGuy.x -= FlyGuy.VELOCIDADE_X;
  47.         }
  48.         else if ( Key.isDown(Keyboard.RIGHT) ) {
  49.             this.flyGuy.scaleX = Math.abs(this.flyGuy.scaleX);
  50.             this.flyGuy.play();
  51.             if ( this.flyGuy.x <= (Main.LARGURA - 80) )
  52.                 this.flyGuy.x += FlyGuy.VELOCIDADE_X;
  53.         }
  54.         else {
  55.             this.flyGuy.gotoAndStop(1);
  56.         }
  57.     }
  58. }
  59. }

Agora tudo é classe e tudo é orientado a objeto. Então temos a classe da nossa Sprite principal, o Main, temos a classe FlyGuy e temos a classe Key. O exemplo é bem simples como o post passado, porém agora o FlyGuy anda realmente. O scroll do cenário será implementado no próximo post.

Um ponto importante a ser notado é a classe Key. Eu tive que utilizá-la porque o Framework 3.0 do Flash não dá suporte ao método estático necessário. Ou seja, não existe alguém que possa te responder se uma tecla está sendo pressionada. A plataforma apenas avisa quando uma tecla é pressionada. O gerenciamento tem que ser feito na mão. Eu achei uma classe num blog gringo, fiz algumas alterações necessárias e coloquei alguns comentários. E agora ela pertence ao Framework Flash da CubaGames.

O exemplo pode ser visto aqui e baixado aqui. Na próxima semana tem mais.

OBS: Utilizei o FlashDevelop pra desenvolver, por enquanto estou gostando dele.

Aquele abraço!

Categorias: Desenvolvimento, Flash - ActionScript, FlyGuy |


Deixe um comentário