2 Stimmen

Warum Flex AS3 TextArea Htmltext ändert Format auf Ereignis

Da ich nicht schlafen kann, habe ich meine Testanwendung hier hinzugefügt. Einfach kopieren und einfügen, um zu testen, dass die Anwendung gut formatierten HTML-Text in einen Textbereich einfügt, wenn man auf ' hinzufügen. ' und dann beim Anklicken von ' gehen. Wenn ich diesen Html-Text in einen anderen Textbereich übertrage, sehe ich, dass der Text sein Format geändert hat und die Tags durcheinander geraten sind.

Mein Ziel ist es, den HTML-Text in ein anderes Format für eine andere Schnittstelle umzuwandeln. Dieses Durcheinander von Tags bereitet mir jedoch Kopfzerbrechen.

Für Lösungen zur Vermeidung oder Behebung dieses Problems wären wir sehr dankbar.

<?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>

0voto

Jason Towne Punkte 7844

Wenn Sie einen Wert in das Feld TextArea.htmlText Eigenschaft fügt Flex automatisch zusätzliche HTML-Auszeichnungen ein, die dem in den CSS-Styles festgelegten StandardTextFormat entsprechen.

Um dieses Verhalten zu umgehen, würde ich eine neue Komponente erstellen, die die TextArea-Komponente erweitert und die set htmlText um den ursprünglichen Text in einer neuen Variablen namens OriginalHTMLText auf die Sie später zugreifen können, um den ursprünglichen HTML-Text zu erhalten.

Versuchen Sie, dies als Ausgangspunkt zu verwenden:

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;
        }
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X