我想要监听键盘事件的舞台,并且我想直接在事件发生时捕获事件(不在冒泡或目标中)。为什么我不能这样做?为什么stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown,true)不起作用?
事实上,我似乎根本不能使用useCapture
来处理键盘事件。
我想通过按tilda按钮打开我的内部控制台窗口,并将焦点更改为输入字段。所以,我写了这样的事情
public function init(stage:Stage):void
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, onStageKeyDown);
}
private function onStageKeyDown(event:KeyboardEvent):void
{
event.stopImmediatePropagation();
switch(event.keyCode)
{
case Keyboard.BACKQUOTE:
visible = !visible;
stage.focus = visible ? inputField : stage;
break;
}
}
的问题是,它写入在我输入“`”的性格,我不希望它做的。所以,我决定尝试听取捕获阶段的键盘事件来停止它的传播。但似乎阶段不能有捕捉阶段,因为它之前没有节点。我如何正确处理这种情况?
您可以在捕获阶段使用的keydown。也许如果你解释你当前的应用程序,并显示相关的源代码,有人会真正帮助你... – BadFeelingAboutThis
更新信息附加信息 – user1496491