一、   关于键盘事件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
程序响应一个按键或一系列按键并执行一些动作,例如Control+q退出程序。Flex支持所有来自后台操作系统的所有组合键操作,它同样允许你覆盖或捕获任何按键或组合键爱执行一个用户自定义动作。
1.     处理键盘事件
在一些情况下,你希望捕捉全局的按键事件,不管用户在程序的哪个地方,他们的按键操作都会被程序检测到,并且动作会被执行。F
一个处理全局按键事件的通用方法是在application上创建一个KeyboardEvent.KEY_DOWNKeyboardEvent.KEY_UP事件监听器。不管焦点在哪儿(只要焦点在程序中,而不是在浏览器控件上或浏览器之外),只要键盘被敲击,application容器上的监听器都将被触发。在处理器内,你可以使用KeyboardEvent类的charCode和keyCode属性检查键位码或者字符码,如下所示:
<!-- events/TrapAllKeys.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp();">
<mx:Script><![CDATA[
private function initApp():void {
application.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
}
private function keyHandler(event:KeyboardEvent):void {
t1.text = event.keyCode + "/" + event.charCode;
}
]]></mx:Script>
<mx:TextInput id="myTextInput"/>
<mx:Text id="t1"/>
</mx:Application>
要运行这个例子,你必须首先将焦点设定到程序中的某个东西上,例如文本输入控件。
因为任何集成了UIComponent的类都可以调度keyUp和keyDown事件,你也可以捕捉当焦点位于特定组件内时的键盘敲击事件。如下所示:
<?xml version="1.0"?>
<!-- events/TrapKeysOnTextArea.mxml -->
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="initApp();">
<mx:Script><![CDATA[
private function initApp():void {
myTextInput.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
}
private function keyHandler(event:KeyboardEvent):void {
t1.text = event.keyCode + "/" + event.charCode;
}
]]></mx:Script>
<mx:TextInput id="myTextInput"/>
<mx:Text id="t1"/>
</mx:Application>
2.     了解键位码和字符码属性
你可以通过访问keyCode和harCode属性来确定到底是哪个键被敲击,并触发另一个动作作为结果。keyCode属性是一个数字值,它相当键盘上的建的值;charCode属性是建在当前字符集中的数字值(默认的字符集是UTF-8)。两者主要的区别在于,keyCode描述了键盘上的一个特殊的建(第一行中的1和小键盘中的1是不同的键,但第一行的1和!是相同的键),charCode描述了一个特殊的字符(R和r是不同的)。
         键和键位值的映射关系依赖于设备(键盘)和操作系统。
         下面的例子展示了你敲击的键的字符和键位码:
<?xml version="1.0"?>
<!-- charts/ShowCharAndKeyCodes.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
<mx:Script><![CDATA[
import flash.events.KeyboardEvent;
private function init():void {
ti1.setFocus();
this.addEventListener(KeyboardEvent.KEY_DOWN, trapKeys);
}
private function trapKeys(e:KeyboardEvent):void {
ta1.text = String(e.toString());
l1.text = numToChar(e.charCode) + " (" + String(e.charCode) + ")";
l2.text = numToChar(e.keyCode) + " (" + String(e.keyCode) + ")";
}
private function numToChar(num:int):String {
if (num > 47 && num < 58) {
var strNums:String = "0123456789";
return strNums.charAt(num - 48);
} else if (num > 64 && num < 91) {
var strCaps:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
return strCaps.charAt(num - 65);
} else if (num > 96 && num < 123) {
var strLow:String = "abcdefghijklmnopqrstuvwxyz";
return strLow.charAt(num - 97);
} else {
return num.toString();
}
}
]]></mx:Script>
<mx:TextInput width="50%" id="ti1"/>
<mx:Canvas id="mainCanvas" width="100%" height="100%">
<mx:Form>
<mx:FormItem label="Char (Code)">
<mx:Label id="l1"/>
</mx:FormItem>
<mx:FormItem label="Key (Code)">
<mx:Label id="l2"/>
</mx:FormItem>
<mx:FormItem label="Key Event">
<mx:TextArea id="ta1" width="500" height="200" editable="false"/>
</mx:FormItem>
</mx:Form>
</mx:Canvas>
</mx:Application>
你可以通过使用条件运算符来监听特定的键或组合键:
<?xml version="1.0"?>
<!-- events/TrapQKey.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp();">
<mx:Script><![CDATA[
private function initApp():void {
application.addEventListener(KeyboardEvent.KEY_UP,keyHandler);
// Set the focus somewhere inside the application.
ta1.setFocus();
}
//This function quits the application if the user presses Shift+Q.
private function keyHandler(event:KeyboardEvent):void {
var bShiftPressed:Boolean = event.shiftKey;
if (bShiftPressed) {
var curKeyCode:int = event.keyCode;
if (curKeyCode == 81) { // 81 is the keycode value for the Q key
/* Quit the application by closing the browser using JavaScript.
This may not work in all browsers. */
var url:URLRequest = new
URLRequest("javascript:window.close()");
navigateToURL(url,"_self");
}
}
}
]]></mx:Script>
<mx:TextArea id="ta1" text="Focus here so that Shift+Q will quit the browser."/>
</mx:Application>

转载于:https://blog.51cto.com/flexria/154542

Flex的事件(十四)相关推荐

  1. JavaScript学习(三十四)—事件委托

    JavaScript学习(三十四)-事件委托 (一).什么是事件委托? 所谓的事件委托就是指将事件添加到祖先元素身上,依据事件冒泡的原理(就是指事件的执行顺序是从当前元素逐步扩展到祖先元素,直到扩展到 ...

  2. 第十四届蓝桥杯(Web 应用开发)模拟赛 1 期-职业院校组-知识点题解

    这个题解是参考了"海底烧烤店ai"一位非常优秀的全栈领域创作者的博主写的,自己在看的时候发现个人知识点比较欠缺,所以就在题解下面添加了一些知识点,便于理解. 原博主的文章链接如下: ...

  3. 微信小程序(第二十四章)- 数据交互前置

    微信小程序(第二十四章)- 数据交互前置 讲解微信小程序前置的原因 参考文档 理解微信小程序 小程序简介 作用 提问 针对提问--uni-app介绍 小程序和普通网页开发的区别 小程序代码构成 文件个 ...

  4. java从入门到精通二十四(三层架构完成增删改查)

    java从入门到精通二十四(三层架构完成增删改查) 前言 环境准备 创建web项目结构 导入依赖和配置文件 创建层次模型 实现查询 实现添加 实现修改 完成删除 做一个用户登录验证 会话技术 cook ...

  5. 第十四届智能车竞赛规则浅聊

    以下文字摘自于ZNCZZ论坛,目的是用于交流.摘录未做任何删减,文中观点为作者的观点:文中内嵌商业推广信息,请大家自行判断. 这不是魔术,只是看到的是三维世界在二维视网膜上的投影 距离卓老师微信公众号 ...

  6. 只需十四步:从零开始掌握 Python 机器学习(附资源)

    分享一篇来自机器之心的文章.关于机器学习的起步,讲的还是很清楚的.原文链接在:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找 ...

  7. 异常处理程序和软件异常——Windows核心编程学习手札之二十四

    异常处理程序和软件异常 --Windows核心编程学习手札之二十四 CPU负责捕捉无效内存访问和用0除一个数值这种错误,并相应引发一个异常作为对错误的反应,CPU引发的异常称为硬件异常(hardwar ...

  8. 鸟哥的Linux私房菜(基础篇)- 第二十四章、 X Window 配置介绍

    第二十四章. X Window 配置介绍 最近升级日期:2009/08/07 在 Linux 上头的图形介面我们称之为 X Window System,简称为 X 或 X11 罗!为何称之为系统呢?这 ...

  9. [转]Windows Shell 编程 第十四章【来源:http://blog.csdn.net/wangqiulin123456/article/details/7988010】...

    第十四章 设计Shell集成应用 有一些工具可以使应用程序更紧密地与Shell和底层系统进行集成.也就是说,用户可以象处理系统文档和程序那样处理你的文档和程序.例如,右击文件来显示可用功能列表等.Wi ...

最新文章

  1. Linux内核模块编程入门
  2. 从0到1,Airbnb的深度学习实践经验总结
  3. 一份很不错的敏捷产品需要文档模板
  4. Rsync+inotify搭建实时同步系统
  5. vi的插入模式下退格和方向键不能使用的解决方法
  6. java中同步_在Java中的方法同步和语句同步(块同步) - Break易站
  7. vagrant 常用命令
  8. 迅雷CEO陈磊出席深圳IT领袖峰会 解析区块链未来布局
  9. FIFO IP设计说明
  10. hdu 4349——Xiao Ming's Hope
  11. SQL Server-服务器迁移之后login登录问题
  12. [ NOIP 2014 ] TG
  13. ASP.NET AJAX入门系列(8):自定义异常处理
  14. unity 入门学习之(一)创建基本的3D游戏场景
  15. mac osx终端命令大全
  16. 计算机如何更新目录,wps更新目录【设置办法】
  17. 如何制作家庭网络服务器,如何用一个废旧的笔记本打造一个家庭网络服务器?...
  18. Authentication failed for 解决办法
  19. System.IO.FileNotFoundException:“未能加载文件或程序集“System.Runtime, Version=5.0.0.0, Culture=neutral, Public
  20. 一文读懂5G智慧教育:42个应用场景如何改变教育

热门文章

  1. java获取文件新增内容_关于java生成文件,立即又读这个文件但又找不到文件新增内容的问题...
  2. 在线电脑配置PHP源码,域名授权系统PHP源码 V2.7.0 支持盗版追踪
  3. mysql的使用优化问题吗_如何对 mysql 进行优化的问题
  4. php 数组设置为空,PHP数组设置空值
  5. python获取方法的装饰方法_python中的方法和装饰器
  6. 目标检测第5步:如何在Windows 10系统下,搭建YOLOv5(5.0)环境?保姆级,没有人比这个更详细了(更新时间2022.3.22)
  7. java注意的一些细节问题
  8. lintcode最长回文子串(Manacher算法)
  9. poj1006生理周期(中国剩余定理)
  10. (九)linux中断编程