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

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

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

Регистрация: Apr 2009
Сообщений: 4
По умолчанию Как отключить действие клавиши?

Есть динамическое текстовое поле, и требуется отключить действия таких клавиш как "Backspase", "Delete".
Кто-нибудь сталкивался с этим?

Старый 19.02.2010, 01:15
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Т.е., на сколько я понял, вам необходимо запретить пользователю изменять уже введенный текст. При помощи onChanged отслеживайте, изменился ли уже введенный текст, и если да, то меняйте его на старое значение.

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Возможно есть такой способ, но я его не знаю. Попробовал так, текст не удаляется, но каретка двигается влево.
Код AS1/AS2:
Key.addListener(inputText);
snapText = "";
down = false;
inputText.onKeyDown = function() {
	if (Key.isDown(Key.BACKSPACE) || Key.isDown(Key.DELETEKEY)) {
		snapText = this.text;
		down = true;
 
	}
};
inputText.onKeyUp = function() {
	if (down) {
		this.text = snapText;
		down = !down;
	}
};
Вложения
Тип файла: swf text.swf (2.6 Кб, 46 просмотров)

Старый 19.02.2010, 17:53
Legoo вне форума Посмотреть профиль Отправить личное сообщение для Legoo Найти все сообщения от Legoo
  № 4  
Ответить с цитированием
Legoo

Регистрация: Apr 2009
Сообщений: 4
Спасибо за помощь!
Сама идея ясна, гениально !!!
Вот с реализацией загвоздка. Переменная "this.text" берет значание какого текстового поля.
Пытался вот так:
Код AS1/AS2:
per = "";
down = false;
 
_root.createTextField("T",1,50,50,100,100);
_root.T.text="";
_root.T.border=true;
_root.T.type="input";
 
var obj:Object = {};
Key.addListener(obj);
 
per = T.text;
 
obj.onKeyDown = function() {
 
	if (Key.isDown(Key.BACKSPACE) || Key.isDown(Key.DELETEKEY)) {
		T.text = per;
		down = true;
 
	}
};
 
obj.onKeyUp = function() {
	if (down) {
		per = T.text;
		down = !down;
	}
};
Если можно, уважаемый SAMANA, скинь fla файл

Старый 19.02.2010, 18:04
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 5  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
У тебя были ошибки, ты перепутал немного. Вот правильный код, в коментах посмотри я написал где были ошибки
Код AS1/AS2:
per = "";
down = false;
 
_root.createTextField("T",1,50,50,100,100);
_root.T.text="";
_root.T.border=true;
_root.T.type="input";
 
var obj:Object = {};
Key.addListener(obj);
 
//per = T.text; Зачем переопределять ведь это не нужно???
 
obj.onKeyDown = function() {
 
	if (Key.isDown(Key.BACKSPACE) || Key.isDown(Key.DELETEKEY)) {
		per=T.text //Тут было наоборот T.text=per, а ведь смысл в том чтобы
		//на этом этапе сохранить текст в переменную
		down = true;
 
	}
};
 
obj.onKeyUp = function() {
	if (down) {
		T.text=per// а тут уже тексту присваивается значение из переменной.
		//А было опять же наоборот per=T.text
		down = !down;
	}
};

Старый 19.02.2010, 18:28
Legoo вне форума Посмотреть профиль Отправить личное сообщение для Legoo Найти все сообщения от Legoo
  № 6  
Ответить с цитированием
Legoo

Регистрация: Apr 2009
Сообщений: 4
И есть еще проблема в реализации от SAMANA. Kогда нажимаем "Backspace" долго, стирает все. Как избежать этого?

Добавлено через 6 минут
Спасибо за исправления

Старый 20.02.2010, 00:27
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 7  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Пошел другим путём, и он оказался лучше и логичнее, к тому же работает правильно.
Код AS1/AS2:
_root.createTextField("inputText",1,0,0,200,30);
inputText.type = "input";
inputText.border = true;
 
Key.addListener(inputText);
 
inputText.onKeyDown = function() {
	if (Key.isDown(Key.BACKSPACE) || Key.isDown(Key.DELETEKEY)) {
		this.type = "dynamic";
 
	}
};
inputText.onKeyUp = function() {
	this.type = "input";
};

Старый 20.02.2010, 01:20
Legoo вне форума Посмотреть профиль Отправить личное сообщение для Legoo Найти все сообщения от Legoo
  № 8  
Ответить с цитированием
Legoo

Регистрация: Apr 2009
Сообщений: 4
Супер!!!
Все гениальное просто

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

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

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


 


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


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