Почему Flex AS3 TextArea Htmltext меняет формат события - PullRequest
2 голосов
/ 03 декабря 2010

Это не дает мне спать, я добавил свое тестовое приложение здесь.Просто скопируйте и вставьте, чтобы проверить, что приложение добавляет хорошо отформатированный HTML-текст в текстовую область, нажимая « add », затем нажимая « go ». Я переношу этот 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 Ответ

0 голосов
/ 04 декабря 2010

Когда вы задаете значение для свойства 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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...