2

これは私に睡眠を与えていません、私はここに私のテストアプリケーションを追加しました。コピーして貼り付けるだけで、アプリケーションが適切にフォーマットされた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>
4

1 に答える 1

0

プロパティに値を設定すると、TextArea.htmlTextFlexはCSSスタイルから設定されたdefaultTextFormatに対応する追加のHTMLマークアップを自動的に挿入します。

この動作を回避するには、TextAreaコンポーネントを拡張し、関数をオーバーライドして、元のHTMLテキストを取得するために後でアクセスできるset htmlText新しい変数に元のテキストを格納する新しいコンポーネントを作成します。OriginalHTMLText

これを出発点として使用してみてください。

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;
        }
    }
}
于 2010-12-04T02:22:50.157 に答える