Actionscript 3 没有赶上关键事件

Actionscript 3 没有赶上关键事件,actionscript-3,Actionscript 3,我在movieclip中有一个flash组件TextInput,通过as3添加到stage。 在将此mc添加到舞台的那一刻,它将键盘事件(按键向下和按键向上事件)分配给主舞台(主应用程序舞台),并将主舞台焦点设置为主舞台 到目前为止还不错 问题是,当我键入ENTER时,我捕捉到KEY_DOWN,但当我释放KEY ENTER时,我的KEY_UP事件被分配给该事件的函数取消捕捉 有人知道为什么吗 它只有在我点击flash播放器时才起作用 (注释中提供了代码) 我猜KEY_UP事件是由您正在键入的文

我在movieclip中有一个flash组件TextInput,通过as3添加到stage。 在将此mc添加到舞台的那一刻,它将键盘事件(按键向下和按键向上事件)分配给主舞台(主应用程序舞台),并将主舞台焦点设置为主舞台

到目前为止还不错

问题是,当我键入ENTER时,我捕捉到KEY_DOWN,但当我释放KEY ENTER时,我的KEY_UP事件被分配给该事件的函数取消捕捉

有人知道为什么吗

它只有在我点击flash播放器时才起作用


(注释中提供了代码)


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

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

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

我们至少需要查看:addEventListener代码、侦听器函数Sprivate函数initAdded(e:event){u main.stage.addEventListener(KeyboardEvent.KEY\u DOWN、CheckKeyDown)u main.stage.addEventListener(KeyboardEvent.KEY_UP,checkKeysUp);MovieClip(_main.setTageFocus()}私有函数checkKeysDown(e:KeyboardEvent):void{if(e.keyCode==13){trace('enter down')}私有函数checkKeysUp(e:KeyboardEvent):void{if(e.keyCode==13){trace('enter up')}如果将trace(_main.stage.focus)放在向下键上,它将跟踪对象stage您是否尝试添加
MovieClip(_main.setStageFocus())
进入你的KeyDown监听器?这似乎是一个奇怪的问题。即使主舞台焦点是主舞台,KeyUp也不会捕捉到主舞台正在处理的KeyUp。当电影加载时,即使我没有键入任何内容,但输入,KeyUp事件函数不会被调用。我在内部谈论的是,不是你的代码。在内部,文本区域是听这些事件,否则文本就不会出现。我是说它可能会在内部以不同的方式对待ENTER键,然后是event.stopPropagation()当它完成时,会阻止您在冒泡阶段监听它。按下时不会调用按键的事件函数ENTER@MarceloNoronha你试过我的解决方案吗?
_main.stage.addEventListener(KeyboardEvent.KEY_UP,checkKeysUp, true);