从 InteractiveObject 类继承交互模型的显示对象可以使用事件侦听器来响应键盘事件。例如,您可以将事件侦听器放在舞台上以侦听并响应键盘输入。在以下代码中,事件侦听器捕获一个按键,并显示键名和键控代码属性:
function reportKeyDown(event:KeyboardEvent):void
{
trace("Key Pressed: " + String.fromCharCode(event.charCode) + " (character code: " + event.charCode + ")");
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);
有些键(如 Ctrl 键)虽然没有字型表示形式,但也能生成事件。
在上面的代码示例中,键盘事件侦听器捕获了整个舞台的键盘输入。也可以为舞台上的特定显示对象编写事件侦听器;当对象具有焦点时将触发该事件侦听器。
在以下示例中,仅当用户在 TextField 实例内键入内容时,才会在“输出”面板中反映键击。按下 Shift 键可暂时将 TextField 的边框颜色更改为红色。
此代码假定舞台上有一个名为
tf
的 TextField 实例。
tf.border = true;
tf.type = "input";
tf.addEventListener(KeyboardEvent.KEY_DOWN,reportKeyDown);
tf.addEventListener(KeyboardEvent.KEY_UP,reportKeyUp);
function reportKeyDown(event:KeyboardEvent):void
{
trace("Key Pressed: " + String.fromCharCode(event.charCode) + " (key code: " + event.keyCode + " character code: " + event.charCode + ")");
if (event.keyCode == Keyboard.SHIFT) tf.borderColor = 0xFF0000;
}
function reportKeyUp(event:KeyboardEvent):void
{
trace("Key Released: " + String.fromCharCode(event.charCode) + " (key code: " + event.keyCode + " character code: " + event.charCode + ")");
if (event.keyCode == Keyboard.SHIFT)
{
tf.borderColor = 0x000000;
}
}
TextField 类还会报告
textInput
事件,当用户输入文本时,您可以侦听该事件。有关详细信息,请参阅
捕获文本输入
。
注:
在 AIR 运行时中,可以取消键盘事件。在 Flash Player 运行时中,无法取消键盘事件。
KeyboardEvent 优先级
与其他事件一样,键盘事件序列是由显示对象的层次决定的,而不是由在代码中分配
addEventListener()
方法的顺序决定的。
例如,假定您将名为
tf
的文本字段放在名为
container
的影片剪辑内,并在这两个实例中添加键盘事件的事件侦听器,如下例所示:
container.addEventListener(KeyboardEvent.KEY_DOWN,reportKeyDown);
container.tf.border = true;
container.tf.type = "input";
container.tf.addEventListener(KeyboardEvent.KEY_DOWN,reportKeyDown);
function reportKeyDown(event:KeyboardEvent):void
{
trace(event.currentTarget.name + " hears key press: " + String.fromCharCode(event.charCode) + " (key code: " + event.keyCode + " character code: " + event.charCode + ")");
}
由于文本字段及其父容器上都有侦听器,因此,将为 TextField 内的每次键击调用两次
reportKeyDown()
函数。请注意,对于每次按键操作,文本字段在
container
影片剪辑调度事件之前调度事件。
操作系统和 Web 浏览器先于 Adobe Flash Player 或 AIR 处理键盘事件。例如,在 Microsoft Internet Explorer 中按 Ctrl+W 将先关闭浏览器窗口,然后再由包含的任何 SWF 文件调度键盘事件。