마우스, 키보드의 인터렉션 최적화 2/2
저번에 이어서 키보드도 다뤄보겠습니다.
키보드
키보드 이벤트는 이해하기 어려운 이벤트입니다. 왜냐면 키보드 자체가 어렵습니다. 일단 쉬운 사실부터 짚어보죠.
- 키보드 이벤트도 AVM2가 받아서 InteractiveObject 에게 dispatch합니다.
- 마우스와는 달리 keyboardEnabled 이 없습니다.
위의 사실로부터 마우스와 다른 방법으로 이벤트가 전파된다는 사실을 알 수 있습니다. 실험을 통해 확인한 구조는 다음과 같습니다.
- AVM2는 일단 모든 키보드이벤트를 stage에게 dispatch합니다.
- stage는 focus속성에 지정된 객체에게 키보드이벤트를 다시 dispatch합니다.
즉 swf전체에서 언제나 키보드 이벤트를 수신하는 객체는 두 개 밖에 없다는 것입니다. stage는 언제나 받고 focus에 객체가 지정되면 그 녀석도 받죠. 따라서 키보드를 통제하는데 있어 기본은 stage의 키보드 이벤트를 컨트롤하는 것이고 두 번째는 포커스를 받고 있는 객체의 키보드 이벤트를 컨트롤하는 것입니다.