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

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

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

Регистрация: Apr 2009
Сообщений: 74
По умолчанию объединение функций кнопки и клавиши

Как можно сделать, чтоб выполнялось действие, либо при нажатии кнопки, либо клавиши?
Код AS1/AS2:
Key.isDown(Key.ENTER) = enter_btn.onPress = function() {действие
}
Не получается.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Опишите действие в отдельной функции и вызывайте ее при нажатии на кнопку или на клавишу.
__________________
Reality.getBounds(this);

Старый 21.08.2009, 13:01
incorp вне форума Посмотреть профиль Отправить личное сообщение для incorp Найти все сообщения от incorp
  № 3  
Ответить с цитированием
incorp

Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
я бы сделал так:
Код AS1/AS2:
var keyListener:Object = new Object();
Key.addListener(keyListener);
 
keyListener.onKeyDown = enter_btn.onPress = function() 
{
if(Key.getCode()==13||Key.getCode()==0){действие}
};
да, и не забудте что при тестировании через кс у вас работать адекватно не будет, шоткаты клавы не позволят.

Добавлено через 11 минут
хотя, я тут немного подумал, говорят это полезно так будет работать не совсем верно. верно так:
Код AS1/AS2:
var keyListener:Object = new Object();
Key.addListener(keyListener);
 
keyListener.onKeyDown = enter_btn.onPress = function() 
{
if(Key.getCode()==13||this._name=='enter_btn'){_root.t.text+=Key.getCode()}
};


Последний раз редактировалось incorp; 21.08.2009 в 13:13.
Старый 21.08.2009, 13:40
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS1/AS2:
var keyListener:Object = new Object();
Key.addListener(keyListener);
////
keyListener.onKeyDown = function():Void
{
	trace("Down");
	if(Key.isDown(Key.ENTER)) 
	{
		action();
	}
}
enter_btn.onPress = action;
function action():Void
{
	trace("Enter");
}
__________________
Reality.getBounds(this);

Старый 21.08.2009, 14:16
Wlspartak вне форума Посмотреть профиль Отправить личное сообщение для Wlspartak Найти все сообщения от Wlspartak
  № 5  
Ответить с цитированием
Wlspartak

Регистрация: Apr 2009
Сообщений: 74
Что-то не получается. Вот примерпроверка пароля)
Пишу общую функцию:
Код AS1/AS2:
function my_func() {
	if (parole == "Vega") {
		gotoAndStop("Фильм", 1);
	} else {
		gotoAndStop("Ошибка", 1);
	}
}
Как ее вызвать кнопкой либо клавишей ENTER?
P.S.
Получилось так:
Код AS1/AS2:
stop();
var keyListener:Object = new Object();
Key.addListener(keyListener);
 
keyListener.onKeyDown = enter_btn.onPress = function() 
{
if(Key.getCode()==13||this._name=='enter_btn'){if (parole == "Vega") {
		gotoAndStop("Фильм", 1);
	} else {
		gotoAndStop("Ошибка", 1);
	}
}
}
Всем спасибо за помощь.


Последний раз редактировалось Wlspartak; 21.08.2009 в 14:24.
Старый 21.08.2009, 14:56
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS1/AS2:
var keyListener:Object = new Object();
Key.addListener(keyListener);
////
keyListener.onKeyDown = function():Void
{
	if(Key.isDown(Key.ENTER)) 
	{
		my_func();
	}
}
enter_btn.onPress = my_func;
Добавлено через 1 минуту
И да, в my_func надо поменять область видимости, дописав _root к ссылкам на переменные. Или использовать диспатчер.

Добавлено через 3 минуты
Т.е. _root.parole и _root.gotoAndStop();
__________________
Reality.getBounds(this);

Старый 21.08.2009, 15:08
Wlspartak вне форума Посмотреть профиль Отправить личное сообщение для Wlspartak Найти все сообщения от Wlspartak
  № 7  
Ответить с цитированием
Wlspartak

Регистрация: Apr 2009
Сообщений: 74
Спасибо, тоже работает. А почему в последней строке
Код AS1/AS2:
my_func;
без скобок?

Старый 21.08.2009, 15:30
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Когда Вы пишете a = b, вы же не ставите скобки? В данном случае вы пишете "функция а = функция б". Зачем ее вызывать? Она будет вызвана при нажатии. А если поставите скобки - то будет вызвана сразу. Засуньте туда трейс и проверьте - трейс выведется сразу при запуске флэшки, если Вы поставите скобки. Потому что это будет значить "функция а = результат выполнения функции б", и ф-ия б должна быть выполнена сразу, чтобы получить равенство. Как в случае с
Код AS1/AS2:
var max:Number = Math.max(2, 6);
Вы же сразу получаете результат, который и записывается в переменную max? Потому что ф-ия Math.max() была сразу вызвана. Так и здесь.

Добавлено через 16 минут
onPress это переменная, хранящая ссылку на функцию. Когда Вы пишете
Код AS1/AS2:
mc.onPress = function(){}
Вы просто присваиваете этой переменной значение - БЕЗЫМЯННУЮ ф-ию. Скобки здесь - не вызов этой ф-ии, а коллектор параметров, которые она принимает, за ним следует тело ф-ии {}. То есть это просто другой случай в плане синтаксиса. function() - вызов, function(){} - cоздание.
__________________
Reality.getBounds(this);

Старый 21.08.2009, 16:11
Wlspartak вне форума Посмотреть профиль Отправить личное сообщение для Wlspartak Найти все сообщения от Wlspartak
  № 9  
Ответить с цитированием
Wlspartak

Регистрация: Apr 2009
Сообщений: 74
Еще раз спасибо за разъяснениие.
Цитата:
Засуньте туда трейс и проверьте
Я без трейса убедился, что получится результат выполнения функции (я в начале и делал со скобками), и не мог понять, почему так происходит.

Старый 21.08.2009, 16:18
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 10  
Ответить с цитированием
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Цитата:
Сообщение от Wolsh Посмотреть сообщение
onPress это переменная, хранящая ссылку на функцию.
Чуть поправлю гуру.
onPress - это обработчик события, который выполнит событие по ссылке, к которой он приравнен. А function() - это собственно сама фунция, но об этом уже сказано.

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

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

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


 


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


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