如何检测 Actionscript 3 中是不是按下了删除键?

Posted

技术标签:

【中文标题】如何检测 Actionscript 3 中是不是按下了删除键?【英文标题】:How to detect if the delete key was pressed in Actionscript 3?如何检测 Actionscript 3 中是否按下了删除键? 【发布时间】:2010-12-05 04:55:15 【问题描述】:

如何确定是否使用 actionscript 按下了删除键?

addEventListener(KeyboardEvent.KEY_UP, onKeyUp);

...

function onKeyUp(event:KeyboardEvent):void

    trace(event.keyCode);

当按下删除、退格、回车和其他命令键时,上面的代码不会产生任何值。但是,箭头键会产生值。

【问题讨论】:

【参考方案1】:

只是猜测您正在使用 TEXT_INPUT 事件,这不适用于删除和退格。要捕获这些,您可以在舞台上添加一个 eventListener 并收听 KeyboardEvent

【讨论】:

不,我正在监听舞台上的事件。更新了代码 sn-p 以反映这一点。 您必须编写 stage.addEventListener(KeyboardEvent.KEY_DOWN, eventKeyDown) 虽然 (stage.* !) 即使您在文档类的范围内。为我工作...【参考方案2】:

如果您附加侦听器的显示对象处于焦点位置,则代码将正常工作。正如 Theo 所说,对于全局监听,您必须将监听器附加到 stage。从尚未添加到显示列表的对象访问stage 将导致空错误。为了安全起见,在 ADDED_TO_STAGE 事件处理程序中执行此操作。

【讨论】:

【参考方案3】:
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);
....

function onKeyPressed(event:KeyboardEvent):void

   if (event.keyCode==Keyboard.DELETE) 
       .....
       


很好用... 但是如果你从 Flash 中测试电影,它就不会工作,所以导出到 swf 并测试....

【讨论】:

有趣。我猜是因为模拟器是在 FLash IDE 里面运行的,所以 IDE 本身就是在拦截删除命令。【参考方案4】:

旧线程,但如果有人走到这一步:在 IDE 内的 Flash Player 中,这些键与快捷方式相关联。当你测试你的电影时,选择控制>在播放器中禁用键盘快捷键,你会得到这些事件。

【讨论】:

以上是关于如何检测 Actionscript 3 中是不是按下了删除键?的主要内容,如果未能解决你的问题,请参考以下文章

在 Actionscript 3 中拖动时检测鼠标离开阶段

使用闪存中的 actionscript 3 检测 USB 设备

在 ActionScript 3.0 中以编程方式检测 Adob​​e Air 和 Adob​​e Flex

ActionScript 3 检测文本何时在TextFlow对象中运行到ContainerController的末尾

ActionScript 3 检测文本何时在TextFlow对象中运行到ContainerController的末尾

ActionScript 3 AS3检测按键