Форум 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)
-   -   Привязка нажатие кнопки на клавиатуре к нажатию кнопки(button) (http://www.flasher.ru/forum/showthread.php?t=127996)

trion 27.07.2009 20:27

Привязка нажатие кнопки на клавиатуре к нажатию кнопки(button)
 
Необходимо сделать так, чтобы при нажатии клавиатурной кнопки Esc и button выполнялось одно и тоже действие? Действие это весит на кнопки button.

NoCD 27.07.2009 22:46

Вызывай общую функцию через клавиатуру и через кнопку.

trion 28.07.2009 17:02

Цитата:

Сообщение от NoCD (Сообщение 838642)
Вызывай общую функцию через клавиатуру и через кнопку.

Через кнопку функция у меня выглядет так:
Код AS1/AS2:

Button.onPress=function()
{                       
        bla-bla
}

А через клавиатуру, как сделать? Так?
Код AS1/AS2:

on (keyPress "<Esc>",release)
{                       
        bla-bla
}


Xero201 28.07.2009 22:50

Код:

общая_функция(){код}
Нажатие_кнопки = общая_функция();
Нажатие_клавиши_Escape = общая_функция();


NoCD 29.07.2009 07:31

Цитата:

Сообщение от Xero201 (Сообщение 838890)
Код:

общая_функция(){код}
Нажатие_кнопки = общая_функция();
Нажатие_клавиши_Escape = общая_функция();


Если я не ошибаюсь, то общая функция без скобок вызывается

Xero201 29.07.2009 10:32

Цитата:

Сообщение от NoCD (Сообщение 838936)
Если я не ошибаюсь, то общая функция без скобок вызывается

Да, это я поспешил(. Вы правы.
Раз лоханулся, то приведу уже и полный код
Код AS1/AS2:

function share_function(){        
//code
}
Button_btn.onPress = share_function;
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
//When you use this example, be sure to select Control > Disable Keyboard Shortcuts in the test environment.
    if (Key.isDown(Key.ESCAPE)) {
    share_function();
    //Key.removeListener(keyListener);
    }
};
Key.addListener(keyListener);


aksios 29.07.2009 10:55

Код AS1/AS2:

myButton.onPress=function()
{                trace("onPress")
}
this.onEnterFrame = function() {
if (Key.isDown(Key.SPACE))
{ trace ("space")}}

*Для отладки вовсе не обязательно использовать функциональные кнопки типа ескейп, можно более скромный пробел.

mooncar 29.07.2009 11:19

Действительно, для тестового режима ESC не годится, но для окончательного
проекта вот рабочий вариант:

Код AS1/AS2:

function share_function(){        
//код общей функции
};
Button_btn.onPress = share_function;
 
Button_btn.onKeyDown = function() {
    if (Key.isDown(Key.ESCAPE)) {
        share_function();
    }
};
Key.addListener(Button_btn);

ИМХО, функция на onEnterFrame будет зависеть от частоты кадров, нажатие на клавишу может не пойматься. Например, даже на частоте кадров 12 не всегда отлавливается. Лучше все-таки слушателя использовать.
Недавно опытные люди посоветовали не плодить лишних мусорных листенеров, поэтому функцию слушателя нажатия на клавиатурную кнопку ESC здесь выполняет сама флешевская кнопка: Key.addListener(Button_btn).
Автору - этот код будет работать в готовой флешке, а если тестировать через F12, эскейп не отработается, так как эскейп сама программа будет перехватывать. Нужно запускать флешку отдельно.

aksios 29.07.2009 11:36

Луноход, заготовка для доточки напильником?
Код AS1/AS2:

function share_function(){        
//код общей функции
trace("main function")
};
myButton.onPress= function()
{
        trace ("mouse button press");
        share_function()
        }
 
myButton.onKeyDown = function() {
    if (Key.isDown(Key.SPACE)) {
        share_function();
        trace ("key down")
    }
};
Key.addListener(myButton);


mooncar 29.07.2009 11:40

Цитата:

Сообщение от aksios (Сообщение 838967)
Луноход, заготовка для доточки напильником?

Типа того, юмор оценил :)
Но здесь
Код AS1/AS2:

myButton.onPress= function()
{
        trace ("mouse button press");
        share_function()
        }

можно наверное, ограничится и ссылкой на функцию, а не вызывать ее. Автору же не нужно различать, что нажали, главное, чтобы действие одинаковое было....


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

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