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

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

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

Регистрация: Dec 2007
Сообщений: 6
По умолчанию 2 поля ввода на разных обработчиках. Реагирует только одно. Почему?

Надо чтобы 2 текстовых поля реагировали по разному на нажатие одних и тех же клавиш.
Вот код:

lime_on_scrap.onKeyDown = function(){
key = Key.getCode();
if (key == 84 && this._name == "lime_on_scrap") {
val = Number(lime_on_scrap.text);
val += 50;
lime_on_scrap.text = val;
trace(this._name);
}
return false;
}

dolomite_1_on_scrap.onKeyDown = function(){
key = Key.getCode();
if (key == 84 && this._name == "dolomite_1_on_scrap") {
val = Number(dolomite_1_on_scrap.text);
val += 50;
dolomite_1_on_scrap.text = val;
trace(this._name);
}
return false;
}

Key.addListener(lime_on_scrap);
Key.addListener(dolomite_1_on_scrap);

Когда фокус находится на поле dolomite_1_on_scrap при нажатии на клавишу t реагирует поле lime_on_scrap! То есть когда фокус ввода на поле dolomite_1_on_scrap оно должно увеличиваться, а увеличивается поле lime_on_scrap. Почему?

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

Регистрация: Apr 2007
Сообщений: 1,369
У Вас проблема в том, что нажатие клавиш слушают оба поля, а нужно что бы слушало одно, конкретное.
Может есть другой выход, но идея такова:
Код:
lime_on_scrap.onKeyDown = function() {
	key = Key.getCode();
	if (key == 84 && this._name == "lime_on_scrap") {
		val = Number(lime_on_scrap.text);
		val += 50;
		lime_on_scrap.text = val;
		trace(this._name);
	}
	return false;
};

lime_on_scrap.onSetFocus = function(oldFocus:Object) {
	Key.addListener(lime_on_scrap);
};
lime_on_scrap.onKillFocus = function(newFocus:Object) {
	Key.removeListener(lime_on_scrap);
};
dolomite_1_on_scrap.onKeyDown = function() {
	key = Key.getCode();
	if (key == 84 && this._name == "dolomite_1_on_scrap") {
		val = Number(dolomite_1_on_scrap.text);
		val += 50;
		dolomite_1_on_scrap.text = val;
		trace(this._name);
	}
	return false;
};

dolomite_1_on_scrap.onSetFocus = function(oldFocus:Object) {
	Key.addListener(dolomite_1_on_scrap);
};
dolomite_1_on_scrap.onKillFocus = function(newFocus:Object) {
	Key.removeListener(dolomite_1_on_scrap);
};
Проверил, всё работает.
__________________
john

Старый 04.05.2008, 13:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
wizzard555, отредактируйте свой пост и оформите код тегами [code][/code].

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

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

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


 


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


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