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

veles2008 01.12.2009 22:52

кнопка на клавиатуре нажимает кнопку на сцене
 
Приветствую!

Помогите пожалуйста с проблемой.

На сцене есть кнопка и объект. При нажатии на эту кнопку мышкой кнопка меняет цвет (через внутренний "Down") и объект выполняет какие то действия.

Как сделать чтобы при нажатии кнопки на клавиатуре (например кнопку "UP") нажималась кнопка на сцене?

zurkis 01.12.2009 23:06

через onKeyUp, в хелпе есть пример

veles2008 01.12.2009 23:28

Такого примера я не вижу.

Ещё раз сокращённо:

Нужно чтобы кнопка на сцене нажималась и мышкой и кнопкой клавиатуры

mooncar 01.12.2009 23:34

Естественно, всех выкрутасов хелп не может предусмотреть, да и не должен, комбинировать нужно, программировать.
Пишите одну функцию, которая должна что-то делать, и назначаете ее исполнение на onKeyDown клавиши и onPress символа-кнопки:
Код AS1/AS2:

function doIt () {
        //действие
}
 
btn.onPress = doIt; //кнопка сцены - прижата, но не отпущена
 
var keyListener_obj:Object = new Object();
keyListener_obj.onKeyDown = function() { //кнопка клавиатуры - - прижата, но не отпущена
    if (Key.getCode() == Key.UP) { //ловит конкретно клавишу UP
                doIt ();
    }
};
Key.addListener(keyListener_obj);


veles2008 01.12.2009 23:51

Большое спасибо.

А я там ещё спрашивал:
Когда нажимаем мышкой на кнопку срабатывает её внутренний "Down" . Это как то можно добавить?

И ещё в данном коде нажимаю на кнопку клавиатуры и действие выполняется пока не отпущу. А можно как то так чтоб нажал на кнопку клавиатуры и действие выполнилось 1 раз и если держать действие не повторялось, а повторилось только при повторном нажатии?

mooncar 01.12.2009 23:57

Цитата:

Сообщение от veles2008 (Сообщение 869608)
И ещё в данном коде нажимаю на кнопку клавиатуры и действие выполняется пока не отпущу. А можно как то так чтоб нажал на кнопку клавиатуры и действие выполнилось 1 раз и если держать действие не повторялось, а повторилось только при повторном нажатии?

Замените onKeyDown на onKeyUp, и вместо onPress поставьте onRelease - тогда на отпускание будет срабатывать и там и там.

Цитата:

Сообщение от veles2008 (Сообщение 869608)
Когда нажимаем мышкой на кнопку срабатывает её внутренний "Down" . Это как то можно добавить?

Надо поколдовать:
1. Заменяете кнопку-Button на кнопку - MovieClip, в нем два кадра: обычное и нажатое состояние. В каждом кадре (или только в первом) пропишите stop();
2. Вносите изменения в код, чтобы правильно анимировать кнопку через btn.gotoAndStop() на нужный кадр. Разберитесь там с событиями клавиатуры сами , поэкспериментируйте.

veles2008 02.12.2009 00:07

ок. Спасибо

dimarik 02.12.2009 00:08

Код AS1/AS2:

if (Key.getCode() == Key.UP && flag) { //ловит конкретно клавишу UP
 flag = false;
...
}

Добавлено через 3 минуты
Цитата:

Сообщение от mooncar (Сообщение 869611)
1. Заменяете кнопку-Button на кнопку - MovieClip, в нем два кадра: обычное и нажатое состояние.

Внимательно читаем хелп по AS2, поискав по кючевым словам "_up", "_over" или "_down".
Даже я нашел "Creating movie clips with button states".

veles2008 02.12.2009 00:21

А можно
Код AS1/AS2:

var keyListener_obj:Object = new Object();

как то подругому, а то всё хорошо, а действия происходят в геометрической прогрессии?

mooncar 02.12.2009 00:24

Цитата:

Сообщение от veles2008 (Сообщение 869617)
А можно
Код AS1/AS2:

var keyListener_obj:Object = new Object();

как то подругому, а то всё хорошо, а действия происходят в геометрической прогрессии?

Вопрос не понятен.


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

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