AS2:让flash捕获用户的快捷键动作

2008-09-18 23:38:21

一般情况下,大家都知道要让flash捕获用户的按键动作可以使用Key类中的onKeyDown、onKeyUp事件以及Key.isDown()、Key.getCode()和Key.getAscii()等方法来实现。这里说一下如何捕获一些组合键(如ctrl+s)?下面是一段捕获ctrl+s快捷键的AS2代码: [code]var keyListener:Object = new Object(); keyListener.onKeyDown = function() { trace(Key.getCode()); if (Key.isDown(Key.CONTROL) && Key.getCode() == 83) { txt.text = "ctrl+s"; } }; Key.addListener(keyListener);[/code] 在上面代码中,当用户按下ctrl+s快捷键的时候,文本字段txt中的文本就会变成ctrl+s,表示我们已经正常捕获ctrl+s快捷键了。注意:在flash中测试影片(ctrl+enter)的时候一定要在控制中把禁用快捷键勾上,否则测试无效。 但是有些快捷键,如ctrl+C、ctrl+F等,用上面的方法仍然无法捕获。这是因为这些快捷键已经被flash player首先给捕获做其他用途了,当然就无法传到里面的处理函数了。因此我们要告诉flash player释放这些快捷键给AS使用,幸好fscommand函数的trapallkeys命令可以实现这个目的,具体代码为: fscommand("trapallkeys", true); 这样要实现ctrl+C快捷键,就只要在上面捕获ctrl+s快捷键的AS2代码中加上这条语句就可以了。不过注意这条语句在flash中测试影片(ctrl+enter)的时候是无效的,因为这些快捷键被flash IDE捕获,要单独运行swf文件才有效。具体代码为: [code]fscommand("trapallkeys", true); var keyListener:Object = new Object(); keyListener.onKeyDown = function() { trace(Key.getCode()); if (Key.isDown(Key.CONTROL) && Key.getCode() == 67) { txt.text = "ctrl+c"; } }; Key.addListener(keyListener);[/code] 我还真不知道 FLASH有 fscommand("trapallkeys", true); 这个命令