2010-12-03 25 views
2

Cela ne me permet pas de dormir, j'ai ajouté mon application de test ici. Il suffit de copier et coller pour tester l'application ajoute bien formaté texte html à une zone de texte en cliquant sur 'ajouter' puis en cliquant sur 'go' Je prendre ce texte html dans une autre zone de texte et je vois le texte a changé format où les étiquettes se confondre.Pourquoi Flex AS3 TextArea Htmltext change le format de l'événement

Mon but final est de re-générer le texte html vers un autre format pour une autre interface. Cependant, cette confusion des étiquettes me cause des maux de tête. Toutes les solutions pour empêcher ou rectifier cela seraient très appréciées.

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

Avez-vous eu l'occasion d'essayer la solution que je suggère? –

+0

Salut jason - OUI !!! JOLI!! - Maintenant, juste une méthode pour voir si le texte a été édité et quelques-uns puis un peu de magie regex ... Cependant - en regardant Flex 4 avec RichEditableText ... Merci beaucoup d'avoir pris le temps de répondre – Murray

+0

Awesome! Je suis content d'entendre cela aidé. Si vous le marquez comme la réponse acceptée (en cliquant sur la coche par la réponse), cela aidera les autres qui pourraient avoir un problème similaire dans le futur. –

Répondre

0

Lorsque vous définissez une valeur à la propriété Flex de TextArea.htmlText insère automatiquement les balises HTML supplémentaire correspondant à la defaultTextFormat définies à partir des styles CSS.

Pour contourner ce problème, je voudrais créer un nouveau composant qui étend le composant TextArea et remplace la fonction set htmlText pour stocker le texte d'origine dans une nouvelle variable nommée OriginalHTMLText vous pouvez accéder à plus tard pour obtenir le texte HTML original.

Essayez d'utiliser comme point de départ:

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