`

监听键盘事件

    博客分类:
  • Flex
阅读更多


AIR 启动后,监听全局键盘事件,即this.addEventListener( KeyboardEvent.KEY_DOWN, keydownHandler );

运行后效果:
AIR 运行后,虽然正确监听了KeyboardEvent .KEY_DOWN event,但是必须要鼠标点击一下AIR 才可以获取keydownHandler。

原因:
1、keydownHandler的获取需要监听的对象获得焦点,当mouse click AIR 后,则相当于获取焦点。
2、只有当监听的对象获取焦点后,才能出接收到KeyboardEvent .KEY_DOWN event。

因此问题根结:
如何让监听对象自动获取焦点。

解决方案:(步骤)
1、
this.dispatchEvent ( new MouseEvent( MouseEvent.CLICK ));
通过以上的方式即可让程序“自动点击”dispatchEvent 的对象。

2、
获取焦点方式:
this.stage.focus  = this;

片段代码如下:
<s:WindowedApplication 
      xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/halo"
      creationComplete="createCompleteHandler (event)">

private function createCompleteHandler( event : FlexEvent ) : void {
      //监听ouseEvent.CLICK event
      this.addEventListener( MouseEvent.CLICK, clickHandler );
      //监听KeyboardEvent.KEY_DOWN
      this.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler );
}

private function clickHandler( event : MouseEvent ) : void {
      this.stage.focus  = this;
}

private function keyDownHandler( event : KeyboardEvent ) : void {
      //TO DO
}

自动触发mouse click的代码:(以下代码在this.addEventListener( KeyboardEvent .KEY_DOWN, keyDownHandler );的下面)
var timer : Timer = new Timer( 100, 1 );
timer.addEventListener( TimerEvent.TIMER_COMPLETE, function ( event : TimerEvent ) : void {
      event.target.stop();
      dispatchEvent ( new MouseEvent( MouseEvent.CLICK ));
});
timer.start();
之所以用timer来处理是因为当create complete后,直接使用dispatchEvent 会发现stage尚未赋值,因此需要延时一段时间处理。
注意:以上代码适用于AIR ,在Flex 里面按照如下写法仍旧无法获取KeyboardEvent .KEY_DOWN event。

Flex 里面是如何自动获取焦点、监听全局键盘事件的呢?

原因:
Flex 由于有浏览器的包裹,因此当打开浏览器后,由于SWF 尚未获取焦点,因此就算自动获取了焦点(dispatchEvent ( new MouseEvent( MouseEvent.CLICK ));)也是没有意义的。

解决方法:
在嵌入SWF 的html里面加入如下的功能:
<body onload="document.getElementById('swf id').focus()">
这句话的含义: 当onload完毕后,自动设定SWF 为焦点状态。

最后再按照AIR 的写即可完成自动获取焦点、监听全局键盘事件。

0
0
分享到:
评论

相关推荐

    Electron中通过globalShortcut实现监听键盘事件进而实现快捷键功能示例代码.zip

    下面我们将深入探讨如何使用`globalShortcut`来监听键盘事件并实现快捷键功能。 首先,引入`electron`模块。在Electron应用中,通常在主进程(main process)中处理快捷键的注册和监听,因为这样可以确保即使在应用...

    jquery 监听 键盘 事件

    其中,监听键盘事件是常见的用户交互处理之一。本文将深入探讨如何使用jQuery来监听键盘事件,以及相关的应用场景和技巧。 ### 1. jQuery键盘事件绑定 jQuery提供了`.on()`方法来绑定事件,包括键盘事件。键盘事件...

    Java监听键盘鼠标全局事件[定义].pdf

    Java监听键盘事件可以通过使用Windows Hook机制来实现。通过设置键盘Hook,可以捕捉键盘按键事件,并将其传递给Java应用程序。Java应用程序可以通过JNI调用native方法来处理键盘事件。 四、Java监听鼠标事件 Java...

    windows后台监听键盘事件(vs mfc版)

    当不再需要监听键盘事件时,我们需要在MFC程序中卸载HOOK: ```cpp if (g_hHook) UnhookWindowsHookEx(g_hHook); ``` 最后,别忘了在MFC应用程序中释放DLL: ```cpp FreeLibrary(hDll); ``` 通过以上步骤,我们...

    java监听键盘事件

    java开发的监听键盘事件,获取并显示键盘事件

    QT 键盘监听(重写监听事件)

    为了全局监听键盘事件,我们需要自定义一个事件过滤器类,继承自QObject,并重写其eventFilter()方法。事件过滤器可以拦截应用程序中的所有事件,包括键盘事件。 ```cpp #include #include class KeyboardFilter...

    js监听键盘事件的方法_原生和jquery的区别详解.docx

    ### JS监听键盘事件的方法:原生与jQuery的区别详解 #### 一、引言 JavaScript (JS) 是一种广泛使用的编程语言,特别是在Web开发领域。它提供了丰富的API来处理各种用户交互,包括监听键盘事件。监听键盘事件对于...

    hook全局监听键盘事件

    在C#编程环境中,"hook全局监听键盘事件"是指通过特定技术手段监控并处理系统级别的键盘输入事件。这种技术常用于开发需要捕获用户键盘行为的应用,如游戏、自动化工具或者安全软件。以下是对这个主题的详细解释: ...

    vue监听键盘事件的快捷方法【推荐】

    在我们的项目经常需要监听一些键盘事件来触发程序的执行,而Vue中允许在监听的时候添加关键修饰符: &lt;input v-on:keyup.13=submit&gt; 对于一些常用键,还提供了按键别名: &lt;input @keyup.enter=submit&gt; ...

    使用JS监听键盘按下事件(keydown event)

    在现代网页设计与开发中,实现用户与网页的交互是至关重要的一部分,其中监听键盘事件就是实现交云的一个常见方法。JavaScript作为网页开发的主要脚本语言,提供了多种方式来监听键盘事件。本文将详细介绍如何使用...

    iOS应用开发中监听键盘事件的代码实例小结

    1.注册监听键盘事件的通知 代码如下:  [[NSNotificationCenter defaultCenter] addObserver:self  selector:@selector(keyboardWillShow:)  name:UIKeyboardWillShowNotification  objec

    全局键盘监听程序,键盘钩子,可以制作服务定向输出上传

    通过安装键盘钩子,程序可以在系统级别监听键盘事件,即使该程序不是当前活动窗口也不例外。键盘钩子分为多种类型,其中与全局键盘监听相关的主要是**低级键盘钩子(Low-Level Keyboard Hook)**,其对应的钩子类型...

    js监听键盘事件的方法_原生和jquery的区别详解

    这篇文章主要讨论了两种常见的监听键盘事件的方法:原生JavaScript和jQuery库的使用。 首先,我们来看原生JavaScript如何监听键盘事件。原生JS提供了三个与键盘事件相关的事件处理器: 1. `onkeydown`:当用户按下...

    使用VB捕捉键盘事件

    在VB(Visual Basic)编程环境中,捕捉键盘事件是创建用户交互功能的重要部分。VB提供了丰富的事件处理机制,允许程序员响应用户的键盘输入。本教程将详细解释如何在VB中实现键盘事件的捕捉,并通过分析给定的文件...

    C#全局捕获键盘事件

    能在窗口不是活动状态下捕获键盘事件

    JavaScript监听键盘事件代码实现

    在Web开发中,监听键盘事件是一种常见的需求,尤其是在需要响应用户按键动作的时候。本文将详细介绍如何使用JavaScript实现键盘事件的监听,并提供了一些示例代码来帮助理解。 首先,需要了解三种键盘事件类型:...

    java 使用KeyListener监听键盘

    在本篇中,我们将深入探讨如何使用`KeyListener`接口来监听键盘事件,以便在用户按下、释放或键入特定键时执行相应的代码。 `KeyListener`是Java AWT(Abstract Window Toolkit)包中的一个接口,它提供了处理键盘...

Global site tag (gtag.js) - Google Analytics