Texte de type HTML dans un TextField à partir d'un fichier XML

Mitch986 Messages postés 23 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 3 juin 2010 - 3 déc. 2008 à 22:19
topazoner Messages postés 14 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 mai 2009 - 19 mai 2009 à 16:50
Bonjour à tous,

Je suis en train de créer une application sous Flash, avec un implémentation quasi complète via un fichier xml. Autrement dit, tous mes champs de texte sont gérés par des valeurs dans un fichier xml. Mes problèmes sont les suivants :

1) Lors de la modification du TextField avec le texte entré dans le fichier XML, le texte n'est pas "coupé" pour être affiché entièrement dans le TextField. Autrement dit, quand j'écris entre mes deux balises <text> du fichier xml : "Je fais un essai avec une longue phrase pour voir", seul "Je fais un essai avec u" est affiché dans le TextField, le retour à la ligne ne se faisant pas automatiquement. Comment régler ce problème?

2) Après avoir activé le texte HTML pour le TextField (htmlText = true), je souhaiterai que les balises soient prises en compte, or, lorsque je place des balises pour écrire en gras, le texte suivant est affiché dans le TextField : <text>Je fais un essai avec une longue phrase pour voir</text>. D'où peut provenir le problème?

Je vous remercie de votre aide!

Romain.

7 réponses

nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
3 déc. 2008 à 22:38
Salut,
1- Textfield : width 300.0; multiline true; wordwrap = true; autoSize="left";//le textfield va s'auto-redimensionner en hauteur. sinon definit lui une hauteur et ne renseigne pas la propriete autoSize;

2- escape tes caracteres , et fais htmlText = unescape(ici_le_noeud_texte_du_xml).

Bonne continuation, au revoir
http://liveplayaz.com

je suis heureux de faire partie d'une grande famille ...!

/B&
0
Mitch986 Messages postés 23 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 3 juin 2010
3 déc. 2008 à 22:49
Salut,

tout d'abord merci pour ta réponse. Malheureusement, pour le 1), cela ne marche pas... Voici le code de mon TextField (je suis sous AS3) :

    var leftPageText:TextField = new TextField();
    with (leftPageText)
    {
        x = 100;
        y = 50;
        height = 340;
        width = 220;
        wordwrap = true;
        htmlText = true;
        multiline = true;
        defaultTextFormat = NormalTextFormat;
        selectable = false;
        text = "Texte par défaut page de gauche";
    }
    this.addChild(leftPageText);

Concernant le 2), voici le code qui modifie le texte du TextField :

for each(var newTitle:XML in titles)
{
      leftPageText.text = newTitle.leftPage.text;
      ...
}

Le fichier XML étant du type :

    <title name="Description">
        <leftPage num="1">
            <text>
J'écris un long texte pour voir si le retour à la ligne est pris en compte et aussi pour voir au niveau des interlignes...
            </text>
        </leftPage>
    </title>

Tu me conseilles donc de faire :

leftPageText.htmlText = unescape(newTitle.leftPage.text) ?

Merci encore de ton aide! :D

Romain.
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
4 déc. 2008 à 05:21
Salut,

1)
var tf:Textfield = new TextField();
tf.width = 300.0;
tf.multiline = true;
tf.wordWrap = true;
tf.htmlText = true; <==== ERREUR enleve cette ligne
tf.selectable = false;
tf.autoSize = "left";
addChild(tf);

2)
    <title name="Description">
        <leftPage num="1">
            <text>
escape(J'écris un long texte pour voir si le retour à la ligne est pris en compte et aussi pour voir au niveau des interlignes...)
            </text>
        </leftPage>
    </title>

puis tf.htmlText = unescape(le_noeud_texte)

bonne continuation, au revoir

http://liveplayaz.com

je suis heureux de faire partie d'une grande famille ...!
0
Mitch986 Messages postés 23 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 3 juin 2010
4 déc. 2008 à 08:05
Salut,

Okay, ça marche à peu près pour le texte HTML, sauf que lorsque j'écris escape(...) dans le fichier xml, il me l'écrit quand même dans le TextField, même avec le unescape pour le htmlText, mais ça marche aussi sans... ;-) Il me fait aussi une grosse marge à droite et en haut.

Sinon, pour le retour à la ligne, c'est le même problème. Lorsque je renseigne seulement la largeur et que je mets un autoSize, le texte déborde sur le côté et empiète sur les autres composants texte. Je ne vois vraiment pas pourquoi ça fait ça...

En tout cas merci bien pour ton aide, et si tu as d'autres idées, je suis preneur! :D

Romain.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
4 déc. 2008 à 21:08
Salut,

bon je vois que je ne me suis pas bien exprime. LE width du TextField est a titre indicatif, tu peux le changer , mais le autosize permet de le faire evoluer seulement en hauteur, mais au moins la largeur est fixe. Ca n'arrivera pas que le Width sera reajuste: ca c'est certain.
En ce qui concerne la mare a droite et en haut, je me pose moi aussi la question car ce bout de code est utilise partout dans mes applications et je n'ai jamais remarque cela. 
 Pour ce qui est du XML , le escape n'est pas une commande du XML , en fait voici un bout de code plus detaille:
//si l'on sidere que xmlstring est une variable qui contient le XML en question

var xmlstring:String = " <title name="Description"><leftPage num="1"><text>"+escape()+"</text></leftPage></title> ";

//ensuite un traitement du xmlvar xml:XMLDocument new XMLDocument(), node:XMLNode null;
xml.ignoreWhite = true;
xml.parseXML(xmlstring);

node = xml.firstChild;//
node = node.firstChild;//<title>
node = node.firstChild;//<leftPage>
node = node.firstChild;//<text>

tf.htmlText = unescape(node.firstChild.nodeValue);

si jamais ca ne te satisfait pas alors le prochain post sera un code complet: textfield + traitementXML
Bonne continuation, au revoir

http://liveplayaz.com

je suis heureux de faire partie d'une grande famille ...!
0
Mitch986 Messages postés 23 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 3 juin 2010
4 déc. 2008 à 22:06
Salut,

désolé de t'embêter, mais pour le autoSize, ce n'est pas ce que je veux faire. En fait, j'ai une zone de texte, dont les dimensions (width et height) sont fixes. Quand je rentre un texte dedans grâce au code ActionScript, comme par exemple :

Voici la page gauche de la Description. Je ne sais pas si ce texte sera entièrement affiché

Je voudrais que le texte soit modifié pour être affiché comme ceci :
(la barre | représente les limites de ma zone de texte en largeur)

Voici la page gauche de la   |
Description. Je ne sais pas  |
si ce texte sera entièrement|
affiché                              |

Avec le autoSize, le texte reste sur la même ligne et déborde de ma zone de texte :

Voici la page gauche de la D|escription. Je ne sais pas si ce texte sera entièrement affiché

Quand je bloque le height et le width, j'obtient ça :

Voici la page gauche de la D|

Le reste du texte étant caché. J'espère que tu vois ce que je veux dire...

Pour le XML, je t'avouerai que ta proposition de me donner le code d'exemple en entier me plaît assez. Je ne suis pas très doué dans la programmation et recevoir de l'aide de personnes confirmées est toujours un plaisir.

Voilà, encore une fois merci beaucoup de prendre le temps de m'aider!!

Romain.
0
topazoner Messages postés 14 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 mai 2009
19 mai 2009 à 16:50
Salut,

Je viens de tomber sur ton post car j'avais également un problème de marge qui apparaissait, lorsque je remplissait mon textfield via la propriété htmltext.

En parcourant la doc, je suis tombé là dessus :

montxtField.condenseWhite = true;

eh bien ça fonctionne ! Super !

Peut être que ton problème était déjà réglé, mais pour ceux qui se poseront la question à l'avenir !

Big Up.
0
Rejoignez-nous