본문 바로가기

무언가 만들기 위한 지식/Action Script

Key Object

Key 객체는 무비가 on인 상태에서 키보드와의 통신을 위해 주어진 객체이다.
Math객체처럼 따로 생성할 필요 없이 바로 사용이 가능하다.

어떤 키를 눌렀는가에 대해 확인하는 방법은 간단하다.
키보드를 누르면 무비에 특정값을 전달하게 된다. 그 값을 Key의 주어진 메소드를 이용하여 get하고 이를 통해 연산을 하면 된다.
주어진 메소드는 다음과 같다.

Method
getAscii : 가장 최근 키의 ASCII코드를 반환.
getCode : 가장 최근에 누른 키의 키코드값을 반환.
isDown : keycode에 지정된 키를 누를 수 있으면 true 반환, 그렇지 않으면 false.
isToggled : 캡슐락이나 넘버락 키가 활성화되어 있으면 true반환, 그렇지 않으면 false.
addListener : onKeyDown과 onKeyUp 알림을 수신할 객체 등록.
removeListener : addListener를 사용해 등록된 객체 제거

Listener
onKeyDown=function(){} : 키가 눌리면 알려줌
onKeyUp=function(){} : 마우스에서 키가 놓여질때 알려줌


모든 키는 그 키의 가상키라는 키값과 아스키 값을 갖고 있다. 사실상 특정 버튼의 경우 아스키값으로 나타낼 수 없기때문에 가상키를 사용하여야 한다. 문자의 경우 아스키값을 이용하여 출력이나 연산에 쓰인다. 

 
위는 실시간으로 입력되는 코드를 받아 각 코드번호와 해당 문자/기호를 출력하는 것이다.
여기서는 String 객체의 fromCharCode로 입력된 아스키 코드를 문자로 바꾸어 주었다.



위 swf공간안에 마우스를 올리고 키를 누르면 작동 값이 변할것이다.
수많은 버튼에는 각 키 값이 넣어져있는데, 모든 키값을 적는 것보다 위에서 직접 눌러보고 확인해 보라.



키보드 이벤트 처리방법에는 3가지가 있다. (onEnterFrame 이용은 cpu에 부담을 줘서 사용하지 않음)

첫번째는 플래쉬 5버전으로 버튼에 등록하여 사용하는 것이다.


위와 같이 on이벤트처리를 하면 keyPress 목록이 나온다. 단 몇개의 버튼이 한정적으로 제한되어 있다.


두번째 방법은 무비클립을 이용하는 것으로 무비클립에 코드를 등록하는 onClipEvent를 이용하는 것이다.
아래와 같이 onClipEvent 내부에 keyDown을 삽입하여 이용한다.
여기서 isDown(키코드값과 같으면 true반환, 아니면 false)을 이용하여 입력 받은 후 이벤트를 설정할 수 있고, 또는 getCode를 이용하여 if 조건문을 제어해도 좋다. ( 아래에서 13은 엔터의 키코드 값이다.)



이해하는 것과 사용하기에는 두번째 방법이 편하지만 플래쉬가 점점 버젼업되면서 객체지향으로 강력해지면서 많이 사용해야 할 것은 세번째 Listener를 이용한 방법이다.

addListener라는 것은 Java GUI부분에서도 비슷한 방법으로 많이 쓰이고 이벤트 등록에 강력하다.(비록 익숙하지 않고 이해하기 까다로운 개념이지만.....)

세번째는 Listener를 이용한 방법이다.
이는 버튼이나 무비클립의 도움 없이 KEY오브젝트 스스로 키가 눌려진 것을 감지 한다. 무비클립에 등록하지 않고 타임테이블에 등록이 가능하기 때문에 사용하기도 편하고 가장 효과적이다.


앞으로 자주 다루어야할 클래스의 최상의 단위 Object를 생성한후 그 Object에 onKeyDown 이벤트를 삽입한다.
Object는 최상위 단위이기 때문에 유연하다. 이는 트리의 루트에 있다는 것을 뜻하며 모든 것을 갖다가 붙일 수 있다. 자세한건 다음시간에 ㅋ~

처음 onKeyDown을 _root에 적용하여 해 보았는데... 에러가 난다. 위에서 처럼 오브젝트나 무비클립에 넣어주어야 한다.
마지막으로 이벤트를 등록한 오브젝트를 addListener를 통해 Key 객체에 등록해주면 된다.

up, down, left, right키에 반응하여 움직이는 무비를 만들어보자.
간단하게 다음과 같다.


위에 보이는 것 처럼 isDown을 이용한 이벤트 생성후 obj에 붙이고 최종적으로 Key 객체에 이벤트를 Listener를 이용하여 등록하는 것이다.
다시한번 강조하지만 isDown내의 숫자는 가상키코드이다. 이는 표를 참조하거나 맨 위에 작성한 KeyCode를 확인하는 플래쉬 파일에서 직접 눌러보고 확인해 보기 바란다.

이런 이벤트를 이용하여 액션 게임및 다양한 게임을 만들 수 있다.


위 코드를 이용한 키보드 방향키에 의해 움직이는 버큐베이비이다. 헐헐