Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как узнать что нажато сочетание клавишь? (http://www.flasher.ru/forum/showthread.php?t=137111)

Aloran 04.03.2010 19:11

Как узнать что нажато сочетание клавишь?
 
Мне нужно по нажатию ctrl + Enter выполнить определенное действие.
В хендлере нажатия клавиши пишу:
Код AS3:

trace(e.keyCode);
if (e.ctrlKey && (e.keyCode == Keyboard.ENTER)) {
    trace("ok");
}

При нажатии ctrl + Enter первый трейс дает 17, а второго просто нет...
Как быть?)

chabapok 04.03.2010 19:43

ну так может у вас второй раз эвент не ловится почему-то? Вы там removeEventListener не делаете случаем? Или может вы отсекаете trace() конструкцией if, и выполнение просто не попадает на ваш участок кода.

вставьте trace в начале функции и убедитесь, что вообще при втором нажатии эвент ловится.
и приведите всю вашу функцию

Aloran 04.03.2010 19:46

Вот полный метод:
Код AS3:

private function onKeyDown(e:KeyboardEvent):void {
                        trace("1");
                        if (_jasc.connected && (_inputMsg_ta.text != "")) {
                                trace(e.keyCode);
                                //if (e.ctrlKey && (e.keyCode == Keyboard.ENTER)) {
                                if (e.keyCode == Keyboard.ENTER) {
                                        if (e.ctrlKey) {
                                        trace("3");
                                        var obj:Object = { };
 
                                        obj.name = myName;
                                        obj.type = "0";
                                        obj.msg = _inputMsg_ta.text;
                                        _inputMsg_ta.text = "";
                                        _jasc.sendServerMessage(obj);
                                }}
                        }
                }

Никаких removeEventLiatener() нет.

Добавлено позже...

Вот более/менее рабочий код
Код AS3:

                private function onKeyDown(e:KeyboardEvent):void {
                        if (_jasc.connected && (_inputMsg_ta.text != "")) {
                                _keys[e.keyCode]=true;
                                if (_keys[17] && _keys[13]) {
                                        var obj:Object = { };
 
                                        obj.name = myName;
                                        obj.type = "0";
                                        obj.msg = _inputMsg_ta.text;
                                        _inputMsg_ta.text = "";
                                        _jasc.sendServerMessage(obj);
                                }
                        }
                }
 
                private function onKeyUP(e:KeyboardEvent):void {
                        _keys[e.keyCode]=false;
                }

Минус его в том что нажимаеться как то неудобно, одновременно надо. А хотелось бы зажать ctrl, а уж потом Enter.

Wolsh 04.03.2010 22:41

Код AS3:

public class KeyboardEvent extends Event {
...
    /// Indicates whether the Alt key is active (true) or inactive (false).
    public function get altKey () : Boolean;
 
    /// Indicates whether the Control key is active (true) or inactive (false).
    public function get ctrlKey () : Boolean;
 
    /// Indicates whether the Shift key modifier is active (true) or inactive (false).
    public function get shiftKey () : Boolean;
...
}


Aloran 04.03.2010 23:38

Не совсем понял что с этим делать.

Спасибо вопрос решен. Работает нормально первый вариант!! Главное флешку через браузер запускать))) Видно такое сочетание блокируется стационарным плеером.


Часовой пояс GMT +4, время: 15:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.