Flex编程注意之自动获取焦点、监听全局键盘事件
来源:互联网 发布:梦里花落知多少闻婧 编辑:程序博客网 时间:2024/05/16 09:50
需求如下:
当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;
片段代码如下:
自动触发mouse click的代码:(以下代码在this.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler );的下面)
之所以用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的写即可完成自动获取焦点、监听全局键盘事件。
- [Flex]Flex编程注意之自动获取焦点、监听全局键盘事件
- Flex编程注意之自动获取焦点、监听全局键盘事件
- [转]Flex 自动获取焦点 监听全局键盘事件
- Flex 自动获取焦点 监听全局键盘事件
- Flex 自动获取焦点 监听全局键盘事件
- flex键盘监听事件
- flex键盘监听事件
- Flex 监听键盘事件
- Flex监听键盘事件【原创】
- 全局钩子监听键盘鼠标事件
- 在全局中监听键盘事件
- Java监听键盘鼠标全局事件
- c# WinForm 全局键盘事件怎么监听
- Java监听键盘鼠标全局事件
- c# WinForm 全局键盘事件怎么监听
- C#全局监听Windows键盘事件
- Flex 监听键盘事件(学习笔记)
- Flex之旅:第一部分:flex必备基础知识积累(1)---监听键盘事件的注意事项
- 一份比较详细的DOS命令说明
- WebService安全解决方案—简单握手协议
- 三层架构+存储过程后台分页+AspNetPager前台分页的经典例子
- memcached
- 忆龙2009:CAMS服务需要开放的端口
- Flex编程注意之自动获取焦点、监听全局键盘事件
- 计划1(2009.11.26)
- 高效率的超大规模Flex开发
- 五步清除内核级木马程序Byshell
- 忆龙2009:CAMS强制注销从LDAP同步来但已经不存在的帐号
- 键盘上每个键的作用!!!
- Automake
- Oracle Advanced Queuing
- 鼠标经过时候边框的实现