PDA

Просмотр полной версии : TextFormat и компонент TextArea


nbno
13.10.2006, 10:17
Можно ли применить форматирование текста к компоненту TextArea с помощью класса TextFormat или есть альтернатива? У меня не вышло.
В хелпе есть TextArea.styleSheet, но это не совсем подходит (как мне показалось). То есть целью является форматирование текста с возможностью указания начального и конечного индексов. В случае со свойством styleSheet это делается вручную с помощью создания и подстановки тегов, что является не очень удобным для меня решением.

Nirth
13.10.2006, 10:35
можно расширить компонент TextArea, и добавить нужные свойства и методы.

nbno
14.10.2006, 02:31
Не подскажите, каким способом это можно осуществить? Точнее в каком направлении копать? UIObjectExtensions.as? UIComponentExtensions.as? mx.controls.TextArea? mx.core.UIObject? mx.core.UIComponent? К сожалению добраться до внутреннего TextField так и не удалось.

Не так часто приходилось иметь дело с компонентами, поэтому опыта маловато.

wvxvw
14.10.2006, 03:24
// _ta - компонент TextArea
for(i in _root._ta.label){
trace(i+" "+ _root._ta.label[i])
}
var ttf = _root._ta.label._getTextFormat();
for(ii in ttf){
trace(ii+" "+ttf[ii]);
}
К сожалению у этого дурацкого и абсолютно бесполезного компонента нет функции setTextFormat()... просто нет =) Наверное разработчики не предполагали, что кто-нибудь будет его использовать, поэтому и не доделали... чтоли =)

Nirth
14.10.2006, 12:10
Хакать, хакать и еще раз хакать...

nbno
14.10.2006, 12:22
Спасибо за ответы. Ну что же, значит будем хакать. :)

Nirth
14.10.2006, 12:51
Ну если прочесть пару разделов по ActionScript 2.0 влом, то хакайте.

nbno
14.10.2006, 18:42
Оказывается через метод setNewTextFormat() форматирование осуществить все-таки возможно, только нельзя указать начальный и конечный индексы. Не одно, так другое. Попробуем расширить класс TextFormat.

etc
15.10.2006, 01:43
import mx.controls.TextArea;
this.createClassObject(TextArea,"my_ta",5,{text:"Test Button"});
f = new TextFormat();
f.color = 0xFF0000;
tf = function() {
delete onEnterFrame;
this.my_ta.label.setTextFormat(0,4,f);
}
onEnterFrame = tf;

nbno
15.10.2006, 08:03
Прояснилась суть проблемы. Как все просто, оказывается. :) Выражаю огромную благодарность __etc.
Теперь, конечно, и doLater() можно применить и redraw() сделать перед заданием форматирования.