Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   комбинация CTRL+Z (http://www.flasher.ru/forum/showthread.php?t=125857)

motoden 03.06.2009 20:02

комбинация CTRL+Z
 
Доброго времени суток, уважаемые эксперты!
Нужно, чтобы по нажатию клавиш CTRL+Z осуществлялся переход на предыдущую страницу, а ниже представленный код работает уже сразу после нажатия CTRL.
Код AS1/AS2:

var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
        if (Key.isDown(Key.CONTROL) && (Key.getCode() == Key.getCode(z))) {
                gotoAndStop(i);
                i=null;
        }
};
Key.addListener(keyListener);

Помогите, пожалуйста, исправить код.

DarkLight 03.06.2009 20:12

Цитата:

Usage
Key.getCode() : Number
Parameters
None.

Returns
A number; an integer that represents the key code of the last key pressed.
А коды клавиш задаются как константы, которые можно найти в разделе хелпа Keyboard keys and key code values.
Поэтому сравнение для z некорректно, и всегда возвращает true. То, что такой код компилируется - из-за излишей мягкости AS2.
Второе сравнение должно быть
Код AS1/AS2:

(Key.getCode() == 90)


KiL33 03.06.2009 21:34

из хелпа
Код AS1/AS2:

function myOnPress() {
    trace("hello");
}
function myOnKeyDown() {
    // 55 is key code for 7
    if (Key.isDown(Key.CONTROL) && Key.getCode() == 55) {
    Selection.setFocus(my_btn);
    my_btn.onPress();
  myOnPress()
  }
}
var myListener:Object = new Object();
myListener.onKeyDown = myOnKeyDown;
Key.addListener(myListener);


motoden 03.06.2009 23:04

Kil33, в хэлпе я видел этот пример. Осталось всего-ничего реализовать мой пример))
DarkLight, даже если я задаю константу
Код AS1/AS2:

var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
        if (Key.isDown(Key.CONTROL) && (Key.getCode() == 90)) {
                gotoAndStop(i);
                i=null;
        }
};
Key.addListener(keyListener);

код всё равно не работает...

Добавлено через 1 минуту
точнее скажу, в этом случае он совсем не работает, в противоположность предыдущему...

silin 04.06.2009 00:24

мутновато с onKeyDown при нажатии нескольких клавиш
как вариант можно
Код AS1/AS2:

var pressed:Boolean = false;
function onEnterFrame()
{
        if (!pressed && Key.isDown(Key.CONTROL) && Key.isDown(90) )
        {
                trace("CONTROL-Z");
        }
        pressed = Key.isDown(Key.CONTROL) && Key.isDown(90);
}


motoden 04.06.2009 00:46

silin, спасибо, работает!
А вы не могли бы пояснить значение заведенной переменной pressed? А то вариант кода и без неё прекрасно работает:
Код AS1/AS2:

function onEnterFrame()
{
        if (Key.isDown(Key.CONTROL) && Key.isDown(90) )
        {
                gotoAndStop(i);
                i = null;
        }
}


silin 04.06.2009 08:18

без проверки при нажатых клавишах 'событие' генерится на каждом такте, т.е. в каждом onEnterFrame вызывается gotoAndStop(i);, а не только при самом нажатии
для gotoAndStop(i); это может быть и не заметно (хотя и не логично), но для каких-то более ощутимых действий легко получится бардак


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

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