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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.10.2006, 01:48
  № 1  
Ответить с цитированием
arrivano
Guest

Сообщений: n/a
Cool Проблема с input font-embedded текстбоксами

Всем привет !!
Я столкнулся со следующей проблемой:
Нужно динамически создать input font-embedded текстбокс(чтобы можно было непосредственно во время исполнения программы, писать заданным шрифтом).
Казалочь бы что тут сложного. Но!!! оказывается так просто не получится:
Код:
var my_fmt:TextFormat = new TextFormat();
my_fmt.font = "Font1";
this.createTextField("my_txt", this.getNextHighestDepth(), 10, 10, 160, 120);
my_txt.type="input";
my_txt.border=true;
my_txt.embedFonts = true;
Это работать не будет!! Чтобы в тексбоксе можно было что-нибудь писать, нужно чтобы ему было присвоено какое-нибудь значение, например:
Код:
my_txt.text="asd";
причём длина строки не должна быть нулевой.
Таким образом, получается, что даже если мы в качестве начального значение поставим пробел (" "), то пользователь, при нажатии на текстбокс будет вынужден сперва удалить этот пробел, а потом уже начать что-нибудь вводить. Это не есть хорошо.
Как решить эту проблему, чтобы изначально строка была пустой, и пользователь при клике на текстбокс видел её как пустую строку (без всякого начального пробела ).
Вот как это реализовывается:
1. первая часть без изменений:
Код:
var my_fmt:TextFormat = new TextFormat();
my_fmt.font = "Font1";
this.createTextField("my_txt", this.getNextHighestDepth(), 10, 10, 160, 120);
my_txt.type="input";
my_txt.border=true;
my_txt.embedFonts = true;
2. далее, сам трикс:
chr(1) - это системный символ, который в текстбоксе просто не видно, он "нулевой длины". Его и присваиваем.
Код:
my_txt.text=chr(1);
my_txt.setTextFormat(my_fmt);
3. но нам всё-таки хочется полностью избавить от этого символа, т.к. если мы будем обрабатывать текстовое поле посимвольно, то в начале строки у нас будет присутствовать символ с кодом "1". вот что мы делаем:
при вводе в текстбокс первого символа, удаляем наш chr(1), и на его место присваиваем только-что введеный символ.
Код:
my_txt.onChanged=function(textfield_txt:TextField) 
{
	if(textfield_txt.text.charCodeAt(0)==1)
		textfield_txt.text=textfield_txt.text.charAt(1);
}
Вот такой вот трикс )))
Пользуйтесь от души.
Думаю он многим пригодится))


пот полный (склееный) листинг:
Код:
var my_fmt:TextFormat = new TextFormat();
my_fmt.font = "Font1";
this.createTextField("my_txt", this.getNextHighestDepth(), 10, 10, 160, 120);
my_txt.type="input";
my_txt.border=true;
my_txt.embedFonts = true;
my_txt.text=chr(1);
my_txt.setTextFormat(my_fmt);
my_txt.onChanged=function(textfield_txt:TextField) 
{
	if(textfield_txt.text.charCodeAt(0)==1)
		textfield_txt.text=textfield_txt.text.charAt(1);
}

Старый 12.10.2006, 04:30
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 2  
Ответить с цитированием
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
ахринеть (извиняюсь).

А может лучше добавить для вводимых символов этот самый фонт? Это называется setNewTextFormat() - не путать с setTextFormat().

Код:
var my_fmt:TextFormat = new TextFormat();
my_fmt.font = "Font1";
this.createTextField("my_txt", this.getNextHighestDepth(), 10, 10, 160, 120);
my_txt.type="input";
my_txt.border=true;
my_txt.embedFonts = true;
my_txt.setNewTextFormat(my_fmt);
__________________
Верить никому нельзя. Мне - можно. :)

Старый 12.10.2006, 05:34
  № 3  
Ответить с цитированием
arrivano
Guest

Сообщений: n/a
Dendroid, спасибо )))
это дейстивтельно гениально и просто )))!!!
хехе )

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

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

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


 


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


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