![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Guest
Сообщений: n/a
|
Всем привет !!
Я столкнулся со следующей проблемой: Нужно динамически создать 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;
Чтобы в тексбоксе можно было что-нибудь писать, нужно чтобы ему было присвоено какое-нибудь значение, например:причём длина строки не должна быть нулевой. Таким образом, получается, что даже если мы в качестве начального значение поставим пробел (" "), то пользователь, при нажатии на текстбокс будет вынужден сперва удалить этот пробел, а потом уже начать что-нибудь вводить. Это не есть хорошо. Как решить эту проблему, чтобы изначально строка была пустой, и пользователь при клике на текстбокс видел её как пустую строку (без всякого начального пробела ). Вот как это реализовывается: 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;
chr(1) - это системный символ, который в текстбоксе просто не видно, он "нулевой длины". Его и присваиваем. 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);
}
|
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
ахринеть (извиняюсь).А может лучше добавить для вводимых символов этот самый фонт? Это называется setNewTextFormat() - не путать с setTextFormat().
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Guest
Сообщений: n/a
|
Dendroid,
спасибо )))это дейстивтельно гениально и просто )))!!! хехе ) |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:05. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|