Просмотр полной версии : комбинация CTRL+Z
Доброго времени суток, уважаемые эксперты!
Нужно, чтобы по нажатию клавиш CTRL+Z осуществлялся переход на предыдущую страницу, а ниже представленный код работает уже сразу после нажатия CTRL.
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.
Второе сравнение должно быть
(Key.getCode() == 90)
из хелпа
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);
Kil33, в хэлпе я видел этот пример. Осталось всего-ничего реализовать мой пример))
DarkLight, даже если я задаю константу
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
if (Key.isDown(Key.CONTROL) && (Key.getCode() == 90)) {
gotoAndStop(i);
i=null;
}
};
Key.addListener(keyListener);
код всё равно не работает...
Добавлено через 1 минуту
точнее скажу, в этом случае он совсем не работает, в противоположность предыдущему...
мутновато с onKeyDown при нажатии нескольких клавиш
как вариант можно
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);
}
silin, спасибо, работает!
А вы не могли бы пояснить значение заведенной переменной pressed? А то вариант кода и без неё прекрасно работает:
function onEnterFrame()
{
if (Key.isDown(Key.CONTROL) && Key.isDown(90) )
{
gotoAndStop(i);
i = null;
}
}
без проверки при нажатых клавишах 'событие' генерится на каждом такте, т.е. в каждом onEnterFrame вызывается gotoAndStop(i);, а не только при самом нажатии
для gotoAndStop(i); это может быть и не заметно (хотя и не логично), но для каких-то более ощутимых действий легко получится бардак
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.