2009-07-15 13 views
3

Ich benutze Flex und AS3, um ein Spiel zu erstellen, und ich frage mich, wie ich die Dinge leicht animieren kann. Ich würde lieber Sprite-Sheet-Bilder verwenden. Ich werde einen Kopf gehen und den Code posten (es ist wirklich kurz) Ich bin so weit gekommen, kann jemand darüber nachdenken und mir den besten/einfachsten/einfachsten Weg erklären, Animationsunterstützung hinzuzufügen? Vielen Dank im Voraus.Wie animiere ich ein Sprite?

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
    styleName = "plain" 
    xmlns="cyanprime.*" 
    layout="absolute" 
    width="600" 
    height="400" 
    frameRate="100" 
    applicationComplete="initApp()"> 

    <mx:Script> 
     <![CDATA[ 
      public function initApp():void 
      { 
       stage.addEventListener(KeyboardEvent.KEY_UP, keyUp); 
       stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown); 
       Mouse.hide(); 
       canvas.init(); 

      } 

      private function keyDown(event:KeyboardEvent):void 
      { 
       canvas.KeyDownHandler(event); 
      } 

      private function keyUp(event:KeyboardEvent):void 
      { 
       canvas.KeyUpHandler(event); 
      } 
     ]]> 
    </mx:Script> 

    <MyGameCanvas id="canvas" width="100%" height="100%" themeColor="#ff0000" /> 
</mx:Application> 

...

package cyanprime{ 

    import mx.core.UIComponent; 
    import mx.controls.Image; 
    import flash.events.*; 
    import flash.utils.*; 
    import flash.display.*; 
    import flash.ui.Keyboard; 

    public class MyGameCanvas extends UIComponent{ 
     [Embed(source="player.gif")] 
     private var playerImage:Class; 
     private var playerSpeed:int = 5; 
     private var keys:Array = new Array(); 
     private var player:DisplayObject = new playerImage(); 
     private var ticker:Timer; 



     public function init():void{ 
      // set up player 
      player.x = 50; 
      player.y = 50; 
      addChild(player); 

      for(var i:int = 0; i < 300; i++) 
      { 
       keys[i] = false; 
      } 

      ticker = new Timer(10); 
      ticker.addEventListener(TimerEvent.TIMER, onTick); 
      ticker.start(); 

     } 

     public function controls():void{ 
      if(keys[Keyboard.RIGHT]) 
       player.x += playerSpeed; 

      if(keys[Keyboard.LEFT]) 
       player.x -= playerSpeed; 

      if(keys[Keyboard.UP]) 
       player.y -= playerSpeed; 

      if(keys[Keyboard.DOWN]) 
       player.y += playerSpeed; 
      } 

     public function KeyDownHandler(event:KeyboardEvent):void{ 
      keys[event.keyCode] = true; 

     } 

     public function KeyUpHandler(event:KeyboardEvent):void{ 
      keys[event.keyCode] = false; 
     } 

     public function onTick(evt:TimerEvent):void { 
      controls(); 
     }  
    } 
} 

Antwort