2010-12-03 3 views
2

Это не дает мне спать, я добавил здесь свое тестовое приложение. Просто скопируйте и вставьте, чтобы протестировать приложение, добавив хорошо отформатированный текст html в текстовую область, нажав «», добавьте '' , а затем нажав 'go' Я переношу этот HTML-текст в другую область текста, и я вижу, что текст изменился формат, где теги запутались.Почему Flex AS3 TextArea Htmltext меняет формат на событие

Моя конечная цель - повторно вывести текст 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> 
+0

У вас был шанс попробовать решение я предложил? – 2010-12-15 00:31:40

ответ

0

При установке значения в 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; 
     } 
    } 
}