Захват событий клавиатуры CTRL + s - PullRequest
1 голос
/ 20 июля 2011

Мне нужно запустить событие, нажав CTRL + S .

Я пробовал это, но это не будет работать:

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

Как это можно сделать?Спасибо за советы.

Ответы [ 2 ]

3 голосов
/ 20 июля 2011

Это ключевой код 83 для S (в случае, если вы делаете эту ошибку).Кроме того, убедитесь, что вы добавили слушателя на событие 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 голос
/ 21 июля 2011

MD ответ выглядит очень хорошо;в нем показано, как добавить прослушиватели событий для событий клавиатуры.

Но он не упомянул одну вещь: если вы запускаете это как Flash SWF в браузере, CTRL + *Ярлык 1005 * S может быть перехвачен и использован браузером, а Flash Player может его никогда не получить. CTRL + S - довольно распространенный способ сохранения страницы, поэтому не удивляйтесь, если у вас возникнут проблемы с фокусировкой браузера.

...