posts - 22, comments - 17, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
一般情况下,大家都知道要让flash捕获用户的按键动作可以使用Key类中的onKeyDown、onKeyUp事件以及Key.isDown()、Key.getCode()和Key.getAscii()等方法来实现。这里说一下如何捕获一些组合键(如ctrl+s)?下面是一段捕获ctrl+s快捷键的AS2代码:

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);

在上面代码中,当用户按下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文件才有效。具体代码为:

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);
只有注册用户登录后才能发表评论。