没有抓住关键事件

时间:2012-03-21 13:04:01

标签: actionscript-3

我在动画片段中有一个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') 
    } 
}

1 个答案:

答案 0 :(得分:0)

我猜想KEY_UP事件正由您输入的文本区域处理,并且它不想共享,因此它会终止事件。尝试:

_main.stage.addEventListener(KeyboardEvent.KEY_UP,checkKeysUp, true);

这导致您的事件侦听器在捕获阶段捕获事件,然后其他事件侦听器取消事件的传播。