2009-07-15 3 views
3

저는 Flex와 AS3을 사용하여 게임을 만들고 있습니다. 어떻게 쉽게 움직일 수 있는지 궁금합니다. 스프라이트 시트 이미지를 사용하는 것을 선호합니다. 나는 머리를 가다가 코드를 게시 할 것입니다. (정말 짧습니다) 지금까지 가지고있는 것을 살펴보고 애니메이션 지원을 추가하는 가장 쉽고/가장 쉬운 방법을 말해 줄 수 있습니까? 미리 감사드립니다.스프라이트를 어떻게 애니메이트합니까?

<?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(); 
     }  
    } 
} 

답변

3

당신은 아마 가장 쉬운 방법입니다 트윈 라이브러리 등 TweenLite를 사용할 수 있습니다. Actionscript에서 애니메이션 작업의 핵심을 배우고 싶다면 Actionscript 3.0 Animation by Keith Peters 책은 누구에게도 뒤지지 않습니다.