MoveSample.as======================================================================================
package
{
import flash.display.*;
import flash.events.*;
import flash.ui.Keyboard;
public class MoveSample extends Sprite
{
private var speedX:Number = 3;
private var speedY:Number = 4;
private var jumpPower:Number = 8;
private var g:Number = 0.5;
private var left:Boolean = false;
private var right:Boolean = false;
private var space:Boolean = false;
private var isOnGround:Boolean;
private var totalGround:int = 12;
public function MoveSample()
{
circle.speedX = 0;
circle.speedY = 0;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keydownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyupHandler);
this.addEventListener(Event.ENTER_FRAME, enterframeHandler);
}
private function keydownHandler(e:KeyboardEvent):void
{
switch(e.keyCode)
{
case Keyboard.LEFT :
left = true;
break;
case Keyboard.RIGHT :
right = true;
break;
case Keyboard.SPACE :
space = true;
break;
}
}
private function keyupHandler(e:KeyboardEvent):void
{
switch(e.keyCode)
{
case Keyboard.LEFT :
left = false;
break;
case Keyboard.RIGHT :
right = false;
break;
case Keyboard.SPACE :
space = false;
break;
}
}
private function enterframeHandler(e:Event):void
{
var ground:Object = getGround();
if(ground == null)
{
isOnGround = false;
circleFly();
}
else{
isOnGround = true;
circle.y = ground.y;
circle.speedY = 0;
}
if(left)
{
circleRun("left");
}
if(right)
{
circleRun("right");
}
if(space)
{
circleJump();
}
if(circle.x < 0)
{
circle.x += speedX;
}
else if(circle.x > 550){
circle.x -= speedX;
}
}
private function circleRun(dir:String):void
{
if(dir=="left")
{
circle.speedX = -speedX;
}
else{
circle.speedX = speedX;
}
if(!isOnGround)
{
circle.speedX *= 0.7;
}
circle.x += circle.speedX;
}
private function circleJump():void
{
if(isOnGround)
{
circle.speedY = -jumpPower;
circle.y += circle.speedY;
}
}
private function circleFly():void
{
circle.speedY += g;
circle.y += circle.speedY;
}
private function getGround():Object
{
for(var i:int=0; i<totalGround; i++)
{
var ground:Object = this["g"+i];
var groundX:Number = ground.x;
var groundY:Number = ground.y;
var groundWid:Number = ground.width;
var groundHei:Number = ground.height;
var circleX:Number = circle.x;
var circleY:Number = circle.y;
if(circleX>groundX && circleX<(groundX+groundWid))
{
if(circleY>=groundY && circleY<(groundY+groundHei))
{
return ground;
}
}
}
return null;
}
}
}
=====================================================================================================
'OM' 카테고리의 다른 글
마우스를 따라 다니는 원 (0) | 2008.06.03 |
---|---|
에어 배포 (badge.swf) (0) | 2008.06.03 |
에어 디스크립터 파일 (0) | 2008.06.03 |
외부에서 load된 swf가 MouseEvent를 가릴때 (4) | 2008.05.18 |
Yahoo WebAPI를 이용한 날씨 위젯 2 (0) | 2008.05.11 |
Yahoo WebAPI를 이용한 날씨 위젯 1 (1) | 2008.05.10 |
Flash Javascript 연동 (ExternalInterface) (0) | 2008.05.07 |
애니메이션 (0) | 2008.05.07 |
생명게임 (0) | 2008.05.05 |