Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.07.2009, 20:27
trion вне форума Посмотреть профиль Отправить личное сообщение для trion Найти все сообщения от trion
  № 1  
Ответить с цитированием
trion

Регистрация: Jan 2009
Сообщений: 25
По умолчанию Привязка нажатие кнопки на клавиатуре к нажатию кнопки(button)

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

Старый 27.07.2009, 22:46
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 2  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Вызывай общую функцию через клавиатуру и через кнопку.

Старый 28.07.2009, 17:02
trion вне форума Посмотреть профиль Отправить личное сообщение для trion Найти все сообщения от trion
  № 3  
Ответить с цитированием
trion

Регистрация: Jan 2009
Сообщений: 25
Цитата:
Сообщение от NoCD Посмотреть сообщение
Вызывай общую функцию через клавиатуру и через кнопку.
Через кнопку функция у меня выглядет так:
Код AS1/AS2:
Button.onPress=function()
{			
	bla-bla
}
А через клавиатуру, как сделать? Так?
Код AS1/AS2:
on (keyPress "<Esc>",release)
{			
	bla-bla
}


Последний раз редактировалось trion; 28.07.2009 в 17:11.
Старый 28.07.2009, 22:50
  № 4  
Ответить с цитированием
Xero201
Guest

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


Последний раз редактировалось Xero201; 28.07.2009 в 23:00.
Старый 29.07.2009, 07:31
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 5  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Цитата:
Сообщение от Xero201 Посмотреть сообщение
Код:
общая_функция(){код}
Нажатие_кнопки = общая_функция();
Нажатие_клавиши_Escape = общая_функция();
Если я не ошибаюсь, то общая функция без скобок вызывается

Старый 29.07.2009, 10:32
  № 6  
Ответить с цитированием
Xero201
Guest

Сообщений: n/a
Цитата:
Сообщение от NoCD Посмотреть сообщение
Если я не ошибаюсь, то общая функция без скобок вызывается
Да, это я поспешил(. Вы правы.
Раз лоханулся, то приведу уже и полный код
Код 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);

Старый 29.07.2009, 10:55
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 7  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Код AS1/AS2:
myButton.onPress=function()
{		trace("onPress")
}
this.onEnterFrame = function() {
if (Key.isDown(Key.SPACE))
{ trace ("space")}}
*Для отладки вовсе не обязательно использовать функциональные кнопки типа ескейп, можно более скромный пробел.


Последний раз редактировалось aksios; 29.07.2009 в 10:58.
Старый 29.07.2009, 11:19
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Действительно, для тестового режима 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, эскейп не отработается, так как эскейп сама программа будет перехватывать. Нужно запускать флешку отдельно.


Последний раз редактировалось mooncar; 29.07.2009 в 11:31.
Старый 29.07.2009, 11:36
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 9  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Луноход, заготовка для доточки напильником?
Код 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);

Старый 29.07.2009, 11:40
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 10  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от aksios Посмотреть сообщение
Луноход, заготовка для доточки напильником?
Типа того, юмор оценил
Но здесь
Код AS1/AS2:
myButton.onPress= function()
{
	trace ("mouse button press");
	share_function()
	}
можно наверное, ограничится и ссылкой на функцию, а не вызывать ее. Автору же не нужно различать, что нажали, главное, чтобы действие одинаковое было....

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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