捕获键盘事件CTRL + s

时间:2011-07-20 13:52:12

标签: actionscript-3 keyboard-events

我需要按 CTRL + S 来触发事件。

我尝试了这个,但它不起作用:

if(e.ctrlKey == true && e.keyCode == 81){
        trace("CTRL+S")
    }

怎么做? 感谢您的提示。

2 个答案:

答案 0 :(得分:3)

对于S来说是keyCode 83(如果你犯了那个错误的话)。此外,请确保在KEY_UP事件上添加侦听器。这是一个工作样本:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx">
    <s:layout>
        <s:VerticalLayout/>
    </s:layout>
    <s:Panel title="Panel 3" width="100%" height="200" creationComplete="onCreationComplete()">
        <s:layout>
            <s:VerticalLayout/>
        </s:layout>
        <fx:Script>
            <![CDATA[
            private function onCreationComplete():void{
                this.addEventListener(MouseEvent.CLICK, clickHandler);
                this.addEventListener(KeyboardEvent.KEY_UP,keyPressed);
            }

            private function clickHandler(event:MouseEvent):void {
                stage.focus = this;
            }

            private function keyPressed(evt:KeyboardEvent):void{
                if(evt.ctrlKey && evt.keyCode == 65)
                    trace("CTRL A is pressed");
                if(evt.ctrlKey && evt.keyCode == 66)
                    trace("CTRL B is pressed");
                if(evt.ctrlKey && evt.keyCode == 81)
                    trace("CTRL S is pressed");
            }
            ]]>
        </fx:Script>
    </s:Panel>
</s:WindowedApplication>

答案 1 :(得分:1)

M.D.的答案看起来非常好;它显示了如何为键盘事件添加事件侦听器。

但有一点他没有提到:如果你在浏览器中将它作为Flash SWF运行,那么 CTRL + S 快捷方式可能会被拦截和消耗浏览器和Flash Player可能永远不会得到它。 CTRL + S 是保存页面的常用快捷方式,因此如果遇到浏览器焦点问题,请不要感到惊讶。