MouseOver и MouseOut для линка в тексте. Часть2: Стили

Данный пост является продолжением моей первой публикации и будет более кратким. Напомню, в предыдущей раз я показал как можно получить события MouseOver и MouseOut для ссылки в htmlText. Возьмем для примера TLFTextField. Наши ссылки выглядят в нем просто ужасно, они мерзкого синюшного цвета да еще и underline(((

Давайте это лечить. Для этого нам понадобится класс TextLayoutFormat содержащий все свойства форматирования текста, а также класс TextFlow, который используется для управления всем текстовым содержимым текстфилда.

Итак:

var myFormat:TextLayoutFormat = new TextLayoutFormat();
//прописываем текущие свойства текстфилда:
myFormat.color = 0x1B75BB;
myFormat.fontFamily = "RaggMoppRegular";
myFormat.lineHeight =13;//расстояние между строками
myFormat.fontSize = 13;

//передаем управление текстовым содержимым новой переменной                                     
var myTextFlow:TextFlow = hint_text.textFlow;
//Объект TextLayoutFormat для данного объекта TextFlow. Это обеспечивает некоторую 
//оптимизацию для повторного использования форматов хоста.
myTextFlow.hostFormat = myFormat;

//linkNormalFormat определяет атрибуты форматирования, используемые для ссылок в состоянии 
//наведения, собственно здесь мы приводим синюшную ерунду 
//в нормальный вид                                      
myTextFlow.linkNormalFormat = { color:0x26A9E0, textDecoration:TextDecoration.NONE };
//теперь обновляем контейнер
myTextFlow.flowComposer.updateAllControllers();


и вуаля:


Ну вот собственно и все;)
  • +5

Комментарии (9)

0
Под кат неплохо бы поместить код.
+1
Да, да, код, и откомпилированный swf :-)
0
Круто, только непонятно :-) даже из чтения адобовских примеров… (я правда не очень сильно пытался). А как это всё на экран-то добавить?
0
поместил под кат, добавляется у меня например так, в конструкторе класса окошка:

                public function HintWin(st:String="some text", schVis:Boolean=true) 
                {
                        schemeVisible = schVis;
                        /*if (!schemeVisible) sch_btn.visible = false;
                        else sch_btn.visible = true;*/
                        
                        setTimeout(function ()//так как свойство текст еще не готово то ждем немного
                        {
                                if (hint_text) 
                                { 
                                        hint_text.htmlText = st;
                                        
                                        ParseLinks();
                                        
                                        var myFormat:TextLayoutFormat = new TextLayoutFormat();

                                        myFormat.color = 0x1B75BB;
                                        myFormat.fontFamily = "RaggMoppRegular";
                                        myFormat.lineHeight =13;
                                        myFormat.fontSize = 13;
                                        
                                        var myTextFlow:TextFlow = hint_text.textFlow;
                                        myTextFlow.hostFormat = myFormat;
                                        
                                        myTextFlow.linkNormalFormat = { color:0x26A9E0, textDecoration:TextDecoration.NONE };

                                        myTextFlow.flowComposer.updateAllControllers();
                                        
                                        //устанавливаем высоту
                                        setTextfieldHeight();
                                }
                                initRectangle();
                                initListener();
                                
                        }, 100);
                        
                        
                }
0
А тип hint_text какой? Если это TextField, то я у него не вижу свойства textFlow…
0
Нашел некий понятный кусок кода. Общий смысл насколько я понял в том, что есть TextFlow, в который добавляю параграфы текста, и к которому можно прикреплять контроллеры, которые в свою очередь привязаны к Sprite. И эти контроллеры умеют нарисовать текст из TextFlow на Sprite. И не только нарисовать, но и ввод с клавиатуры приделать.

Но у тебя ты используешь hint_text.htmlText, т.е. это все-таки не Sprite… Я фшоке.

Заметил, что всё это назывется text layout framework, и не поленился и полез в некий официальный док от по этой теме. Конечно не читал, а только проглядел. Про вывод текста на экран написано, что есть два способа: через TextLineFactory и через Flow Composer (это как раз метод примененный по указанной вначале ссылке). Куда htmlText писать так и не нашел.

Короче колись как и что, а то неясно.
0
ParseLinks();
это функция из прошлого поста, рисующая невидимые кнопки
0
TLFTextField
0
Упс, не обновил перед постом коммента. Теперь ясно.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.