as3 Проблема форматирования текстового поля
У меня проблема с форматированием текстового поля. У меня есть кнопки + и - к размеру текста. Класс TextField имеет свойство defaultTextField для нового форматирования текста. И когда я изменяю свойство размера defaultTextFormat - размер всего текста изменяется. Я искал решение везде и пока не нашел. Текстовый редактор WISWYG (я не уверен, правильно ли указано имя) работает хорошо, просто меняя свойство defaultTextFormat, пока у меня есть проблема. Возможно, это происходит из-за разницы между flash и AIR (редактор на flash и мое приложение на AIR). Пожалуйста помоги.
Вот код для установки / получения TextFormat:
public function set selectionTextFormat(value:TextFormat):void {
var begin:int = _textField.selectionBeginIndex;
var end:int = _textField.selectionEndIndex;
if (begin == end)
{
_textField.defaultTextFormat = value;
}
else
{
_textField.setTextFormat(value, begin, end);
}
}
public function get selectionTextFormat():TextFormat
{
var begin:int = _textField.selectionBeginIndex;
var end:int = _textField.selectionEndIndex;
if (begin == end)
{
return _textField.defaultTextFormat;
}
return _textField.getTextFormat(begin, end);
}
И код для изменения формата:
private function setFormat(property:String, value:*):void
{
var tf:TextFormat = TextFormatter.TF.selectionTextFormat;
tf[property] = value;
TextFormatter.TF.selectionTextFormat = tf;
}
РЕДАКТИРОВАТЬ: ИЗОБРАЖЕНИЕ НА DROPBOX ДЛЯ ОБЪЯСНЕНИЯ: https://dl.dropboxusercontent.com/u/237572639/Capture.PNG
РЕДАКТИРОВАТЬ 2: ИЗОБРАЖЕНИЕ ЧТО МНЕ НУЖНО (КОД АБСОЛЮТНО ЖЕ!) (Редактор WYSIWYG) https://dl.dropboxusercontent.com/u/237572639/WYSIWYG.PNG
1 ответ
Чтобы изменить весь будущий напечатанный текст, вы можете попробовать этот код (результат виден здесь):
var text_input:TextField = new TextField();
text_input.border = true;
text_input.type = 'input';
text_input.text = 'hello world!';
addChild(text_input);
var new_fmt:TextFormat = new TextFormat();
btn_color.addEventListener(
MouseEvent.CLICK,
function(e:MouseEvent):void {
// set the new text color
new_fmt.color = 0xFF0000;
}
)
btn_size.addEventListener(
MouseEvent.CLICK,
function(e:MouseEvent):void {
// set the new text size
new_fmt.size = int(txt_size.text)
}
)
text_input.addEventListener(Event.CHANGE, function(e:Event):void {
text_input.setTextFormat(new_fmt, text_input.caretIndex-1);
})
Конечно, это просто способ делать то, что вы хотите, вы должны адаптировать его к вашим потребностям и улучшить его.