我在动画片段中有一个flash组件TextInput,通过as3添加到舞台。 将此mc添加到舞台的那一刻,它将键盘事件(按键事件和按键事件)分配到主舞台(主应用阶段),并将主舞台焦点设置为主舞台。
到目前为止一切顺利。
问题是,当我输入ENTER时,我捕获KEY_DOWN,但是当我释放键ENTER时,我的KEY_UP事件被我分配给该事件的函数取消了。
任何人都知道为什么?
仅当我点击Flash播放器时才有效。
(评论中提供的代码)
private function initAdded(e:Event){
_main.stage.addEventListener(KeyboardEvent.KEY_DOWN,checkKeysDown);
_main.stage.addEventListener(KeyboardEvent.KEY_UP,checkKeysUp);
MovieClip(_main).setStageFocus()
}
private function checkKeysDown(e:KeyboardEvent):void {
if (e.keyCode == 13) {
trace('enter down')
}
}
private function checkKeysUp(e:KeyboardEvent):void {
if(e.keyCode == 13){
trace('enter up')
}
}
答案 0 :(得分:0)
我猜想KEY_UP事件正由您输入的文本区域处理,并且它不想共享,因此它会终止事件。尝试:
_main.stage.addEventListener(KeyboardEvent.KEY_UP,checkKeysUp, true);
这导致您的事件侦听器在捕获阶段捕获事件,然后其他事件侦听器取消事件的传播。