AIR按钮的键盘快捷键

时间:2012-10-04 13:10:45

标签: actionscript-3 flex air

我使用AIR应用程序。 在此应用程序中,将显示几个窗口。

我喜欢使用 Esc Enter 等快捷方式关闭窗口。

我试着这样做:

// On creation complete
this.addEventListener(KeyboardEvent.KEY_DOWN, exit_keyDownHandler);

// exit function
protected function exit_keyDownHandler(event:KeyboardEvent):void{
 if  ((event.keyCode == Keyboard.ENTER)
    ||(event.keyCode == Keyboard.NUMPAD_ENTER)
    ||(event.keyCode == Keyboard.ESCAPE)){
       stage.nativeWindow.close();
    }
}

但如果窗口中存在文本区域,则会出现问题。因为当用户按 Enter 键关闭文本区域窗口时。如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

使用除了转义键以外的单个键关闭对我来说似乎不是一个好主意,特别是不能使用回车键。

但是,如果你坚持这样做,那么你可以尝试检查当前的焦点对象,以确保它不是一个接受回车键的输入元素/组件。

请参阅FocusManager.getFocus()和Stage.focus。例如,非常严格的检查可能如下所示:

if(focusManager.getFocus() is IFocusManagerComponent ||
   stage.focus is InteractiveObject || stage.focus is IFocusManagerComponent)
{

}