FTE based text controls
Запись от Волгоградец размещена 10.01.2011 в 13:12
Сори за английское название темы - не знаю как в нескольких словах сформулировать суть. По русски будет звучать так: "Представляю вашему вниманию текстовые контролы, использующие для отображения текста Flash Text Engine".
Как вы знаете, в десятке нам подарили возможность работы с текстом на низком уровне. Т.е. дали возможность щупать каждую отдельную букву в слове (называется атом). Также где-то я встречал что TextField признан устаревшим и развиваться в следующих версиях плеера не будет. Т.к. Flash Text Engine (далее FTE) не дает возможности создавать текстовые поля напрямую, вводить текст в поле, выделять текст, Adobe вместе с выпуском FTE выпустили TLF (Text Layout Framework). Штука эта чрезвычайно мощная и крутая. Но в то же время нереально тяжелая, запутанная и тормознутая. Я написал пару контролов, которые повторяют некоторую функциональность обычного TextField, но которые легче и проще TLF.
Что это и для чего это нужно? Это упрощенные аналоги нативного TextField. Писались для конкретных целей, поэтому сверхфункциональностью не обладают. Нужно в том случае, если вы хотите лучшего отображения текста, если хотите задавать прозрачность и поворот текста без эмбеда. Плюс ко всему, даже если вы заэмбедели текст для FTE, то он будет занимать примерно на 10% меньше места, чем если бы заэмбедили для обычного TextField - мелочь, а приятно.
Краткий обзор контролов.
VSimpleText - простейшее текстовое поле, содержащее 1 (одну) строку, не более. Высота текста устанавливается автоматически в зависимости от размера фонта. Ширину можно задать жестко или установить свойство autoWidth в true - тогда текст будет расти в ширину бесконечно. Форматировать текст можно, присвоив свойству textFormat экземпляр VTextFormat - аналог нативного TextFormat. Форматируется текстовое поле целиком - т.е. нельзя форматировать посимвольно. Выделять текст нельзя.
VMultilineText - текстовое поле, которое может содержать несколько линий. Высоту и ширину можно задать жестко или задать автоматическую высоту/ширину. Форматируется точно так же как и VSimpleText - целиком. Можно выделять текст.
VFormatableText - наследник VMultilineText. Однако форматировать можно посимвольно методом formatTextRange(beginIndex:int, lastIndex:int, format:VTextFormat). Также это поле поддерживает html тэги - b, br, font, i (в регулярных выражениях я не силен, поэтому извиняйте если что не так).
Взять можно здесь http://code.google.com/p/fte-text-co...downloads/list
Если кому-то покажется интересным и кто-то будет использовать у себя в проектах - прошу сообщать о багах (можно здесь, можно на гуглокоде).
Примеры использования:
var st:VSimpleText = new VSimpleText(); addChild(st); st.text = 'Hello World!'; st.autoWidth = true; st.height = 500; st.x = 100; st.y = 100; var tf:VTextFormat = new VTextFormat(); tf.color = 0xAA0000; st.textFormat = tf; var mt:VMultilineText = new VMultilineText(); mt.x = 100; mt.y = 300; mt.width = 100; mt.height = 50; mt.autoWidth = true; mt.autoHeight = true; mt.text = 'Hello\nworld\nppppppppppppppppppppppppp'; addChild(mt); tf = new VTextFormat(); tf.color = 0xFF0000; tf.horizontalAlign = VTextAlign.CENTER; tf.verticalAlign = VTextAlign.MIDDLE; mt.textFormat = tf; mt.selectable = true; var ft:VFormatableText = new VFormatableText(); ft.x = 100; ft.y = 500; addChild(ft); ft.htmlText = '<font size="25" color="0xFF0000">This</font> <i>is</i><br/><b>bold</b>';
Всего комментариев 14
Комментарии
10.01.2011 14:18 | |
очень занятно, но названия классов...
|
10.01.2011 14:59 | |
Очень занятно, не знал. Большое спасибо!
Тема, кажется, очень актуальная. Будет здорово увидеть ещё статей по этой теме. |
10.01.2011 16:46 | |
буквально на днях тибо (Thibault Imbert) спрашивал народ, какой проперти или метод им не хватает в текстфилде, просто так бы спрашивать он не стал, так что рано хоронить текстфилд
|
10.01.2011 23:09 | |
V - это от Волгоградец?
статья на тему: http://habrahabr.ru/blogs/arbeit/88443/ пункт: подающий надежды гений. |
11.01.2011 01:36 | |
Кот зачем же ты его так оскорбил?!))
|
11.01.2011 02:16 | |
Котяра, Волгоградец когда о физдвижках писал тоже добавлял букву и ему кинули ту же статью.
Тут что-то другое ) |
14.01.2011 00:54 | |
А как/где задавать имя шрифта (системный и встроенный)?
|
14.01.2011 12:02 | |
07.02.2011 12:28 | |
Скорее всего ширина поля не позволяет вместить 'Предмет есть' в одну строчку. Нужно увеличить ширину или поставить в авто.
|
07.02.2011 18:54 | |
Я делал по аналогии с 'родным' TextField. Там именно так и сделано - размер 100 на 100 и отключен автосайз.
|
Последние записи от Волгоградец
- Изометрическая сортировка. Новый подход. (25.01.2013)
- Stage3D заметки (06.04.2012)
- Embed клипа с одним кадром. (16.01.2012)
- Производительность операций с floating point number (18.03.2011)
- FTE based text controls (10.01.2011)