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