본문 바로가기

Flash/ActionScript 3.0

[MissFlash의 ActionScript 3.0] 1.6 Responding to Mouse and Key Events

* 본 포스트는 "Joey Lott의 ActionScript 3.0 Cookbook"의 내용을 정리, 가공한 것입니다.
* 본 포스트를 퍼가실 때는 상단에 아래와 같이 원본출처를 명시해 주세요! ^^
원본 : http://blog.missflash.com/
출처 : MissFlash.com, http ://www.missflash.com/
* 포스트의 내용중 일부가 추가/수정될 수 있으므로 최신 내용을 접하고 싶으신 분은 원본글을 이용하시기 바랍니다.

1.6 Responding to Mouse and Key Events

Problem
여러분이 마우스나 키보드의 동작에 어떤 반응을 보이고 싶을 때

Solution
mouse나 key 이벤트를 이용합니다.

Discussion
마우스 이벤트의 이름은 MouseEvent 클래스에 정의되어 있습니다.
package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.events.KeyboardEvent;

    public class MF_Flex extends Sprite
    {
        private var _sprite:Sprite;
       
        public function MF_Flex()
        {
            _sprite = new Sprite();
            addChild(_sprite);
            _sprite.graphics.beginFill(0xeeeeee);
            _sprite.graphics.drawRect(0,0,400,400);
            _sprite.graphics.endFill();
            _sprite.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
            _sprite.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);

            stage.focus = this;
            addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
        }
       
        private function onMouseDown(event:MouseEvent):void
        {
            _sprite.graphics.lineStyle(1,0,1);
            _sprite.graphics.moveTo(mouseX, mouseY);
            _sprite.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
        }
       
        private function onMouseUp(event:MouseEvent):void
        {
            _sprite.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
        }
       
        private function onMouseMove(event:MouseEvent):void
        {
            _sprite.graphics.lineTo(mouseX, mouseY);
        }

        private function onKeyDown(event:KeyboardEvent):void
        {
            trace("Key down : " + event.charCode);
        }
    }
}

키보드 이벤트에 따른 응답을 위해서는 focus를 이용하면 됩니다.
stage.focus = this;
위와 같은 코드를 작성함으로써 키보드 이벤트에 응답할 수 있습니다.

See Also
Recipe 1.5