Почему Flex AS3 TextArea Htmltext меняет формат события
Это не дает мне спать, я добавил свое тестовое приложение здесь. Просто скопируйте и вставьте, чтобы проверить, что приложение добавляет хорошо отформатированный HTML-текст в текстовую область, нажимая "добавить", затем нажимая "идти", я беру этот HTML-текст в другую текстовую область и вижу, что текст изменил формат, в котором появляются теги. запутался.
Моя конечная цель состоит в том, чтобы переопределить HTML-текст в другой формат для другого интерфейса. Однако эта путаница меток вызывает у меня головную боль.
Любые решения, чтобы предотвратить или исправить это будет высоко ценится.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()" xmlns:ns1="com.tree.*">
<mx:Script>
<![CDATA[
private function init():void {
originalTA.text='<TEXTFORMAT LEADING="-2">'+ '<P ALIGN="JUSTIFY">'+ '<FONT SIZE="26" COLOR="#9B0000" LETTERSPACING="0" KERNING="0"> some text </FONT> '+ '<FONT SIZE="26" COLOR="#BEBEBE"> some text </FONT> '+ '<FONT SIZE="26" COLOR="#9B0000" LETTERSPACING="0" KERNING="0"> some text </FONT>'+ '</P>'+ '</TEXTFORMAT>';
}
private function add():void {
viewDTA.htmlText=originalTA.text;
}
private function go():void {
htmlTA.text=viewDTA.htmlText;
}
]]>
</mx:Script>
<mx:HBox width="100%" height="100%">
<mx:Label text="input"/>
<mx:TextArea id="originalTA" height="100%" width="100%"/>
<mx:Button label="add" click="add()"/>
<mx:Label text="view"/>
<mx:TextArea id="viewDTA" height="100%" width="100%"/>
<mx:Button label="go" click="go()"/>
</mx:HBox>
<mx:HBox width="100%" height="100%">
<mx:Label text="html"/>
<mx:TextArea id="htmlTA" height="100%" width="100%"/>
</mx:HBox>
</mx:Application>
1 ответ
Когда вы устанавливаете значение на TextArea.htmlText
свойство Flex автоматически вставляет дополнительную разметку HTML, соответствующую значению defaultTextFormat из стилей CSS.
Чтобы обойти это поведение, я бы создал новый компонент, который расширяет компонент TextArea и переопределяет set htmlText
функция для хранения исходного текста в новой переменной с именем OriginalHTMLText
Вы можете получить доступ позже, чтобы получить оригинальный текст HTML.
Попробуйте использовать это как отправную точку:
package
{
import mx.controls.TextArea;
public class HTMLStaticTextArea extends TextArea
{
public var OriginalHTMLText:String = "";
public function HTMLStaticTextArea()
{
super();
}
override public function set htmlText(value:String):void
{
super.htmlText = value;
OriginalHTMLText = value;
}
}
}