惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
V
V2EX
T
Tailwind CSS Blog
N
News | PayPal Newsroom
The Cloudflare Blog
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
C
Cyber Attacks, Cyber Crime and Cyber Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
V
Vulnerabilities – Threatpost
Apple Machine Learning Research
Apple Machine Learning Research
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Threat Research - Cisco Blogs
云风的 BLOG
云风的 BLOG
阮一峰的网络日志
阮一峰的网络日志
T
Threatpost
U
Unit 42
T
The Exploit Database - CXSecurity.com
I
Intezer
爱范儿
爱范儿
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - Franky
Spread Privacy
Spread Privacy
A
Arctic Wolf
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News and Events Feed by Topic
Google Online Security Blog
Google Online Security Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recorded Future
Recorded Future
The Register - Security
The Register - Security
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
H
Help Net Security
Schneier on Security
Schneier on Security
P
Proofpoint News Feed
W
WeLiveSecurity
The Last Watchdog
The Last Watchdog
K
Kaspersky official blog
C
Check Point Blog
小众软件
小众软件
A
About on SuperTechFans
博客园 - 【当耐特】
IT之家
IT之家

博客园 - Kenshin.L

[Flex]flex-htmlfilter swc complete [Flex]Adobe BrowserLabe [Flex]构建基于Flex技术的Blog程序(一) [Flex]Flex Ioc Framework - Parsley [Flex]用编程的方式来写CSS - LESS的应用(一) [Flex]Flex SDK 4(Gumbo)浅析ASDoc - ASDoc MXML应用篇 [Flex]Flex SDK 4(Gumbo)自定义皮肤 - SilverGreen(Spark) 下载 [Flex]Flex SDK 4(Gumbo)浅析ASDoc - ASDoc Tags参数篇 [Flex]Flex SDK 4(Gumbo)浅析ASDoc - Flash Builder 4配置篇 [Flex]Flex SDK 4(Gumbo)自定义皮肤 - SilverGreen(Spark和Halo)预览版 [Flex]Flex SDK 4(Gumbo)浅析SDK 4默认的Spark样式与Halo样式 [Flex]Flex SDK 4(Gumbo)更方便的自定义样式、自定义SparkSkin(三) [Flex]Flex SDK 4(Gumbo)改善的Layout和Scroller(二) [Flex]Flex SDK 4(Gumbo)改善的Layout和Scroller(一) [Flex]Flex编程注意之直接获取某个组件的对象(this[]用法) [Flex]Flex SDK 4(Gumbo)更方便的自定义样式、自定义SparkSkin(二) [Flex]Flash Builder 4 编辑器配色方案 - 黑色系 [Flex]Flex SDK 4(Gumbo)更方便的自定义样式、自定义SparkSkin(一) [RIA]HTML5怎么就成了RIA“杀手”?
[Flex]Flex编程注意之自动获取焦点、监听全局键盘事件
Kenshin.L · 2009-07-12 · via 博客园 - Kenshin.L

详细请看:http://www.k-zone.cn/zblog/post/flex-air-auto-set-focus.html
这是《Flex第一步QQ群里面一个朋友问我的问题,特此拿出分享一下。或许问题比较简单,还是将其记录一下比较好。
需求如下:
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 clickHandler( 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的写即可完成自动获取焦点、监听全局键盘事件。由于代码比较少,因此就不放上demo了,以上的片段代码足以说明问题:)