KeyboardEvent example
좌우상하 키(KeyboardEvent)를 이용하여 화면의 공을 좌우상하방향으로 이동하고, 마우스를 클릭(MouseEvent)하면 클릭한 위치로 공을 이동하는 예제
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="initApp();" applicationComplete="setEvent();">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
var sprite:Sprite;
public function initApp():void {
sprite = new Sprite();
sprite.graphics.beginFill(0xFF5500);
sprite.graphics.drawCircle(0,0,50);
sprite.graphics.endFill();
sprite.x = this.width/2;
sprite.y = this.height/2;
var uicomp:UIComponent = new UIComponent();
uicomp.addChild(sprite);
this.addChild(uicomp);
}
/*
* KeyboardEvent는 stage나 텍스트콤포넌트에 등록할 수 있는데, creationComplete()이벤트발생시에는
* 아직 stage 오브젝트가 null 이므로 applicationComplete()이벤트 핸들러를 이용해야 한다.
*/
function setEvent():void {
stage.addEventListener(KeyboardEvent.KEY_DOWN, keydownHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);
}
public function keydownHandler(event:KeyboardEvent):void {
if(event.keyCode==Keyboard.RIGHT)sprite.x++;
else if(event.keyCode==Keyboard.LEFT)sprite.x--;
else if(event.keyCode==Keyboard.UP)sprite.y--;
else if(event.keyCode==Keyboard.DOWN)sprite.y++;
/* 눌린키를 문자열로 변환하려면 다음과 같이...
var str:String = String.fromCharCode(event.charCode);
*/
}
public function mouseHandler(event:MouseEvent):void {
var x:int = event.stageX;
var y:int = event.stageY;
sprite.x = x;//-sprite.width/2;
sprite.y = y;//-sprite.height/2;
}
]]>
</mx:Script>
</mx:Application>
스테이지를 한번 클릭해 주어야 키보드 이벤트가 발생/처리된다