satanée apostrophe !

satanée apostrophe ! - Flash/ActionScript - Programmation

Marsh Posté le 23-11-2006 à 15:23:34    

bon alors j'en ai marre de cet apostrophe qui se transforme sans cesse en "&apos" dans flash...
 
j'ai donc des textfields dynamiques, avec des fichiers xml, j'ai fait un embedFonts avec un setNewTextFormat pour les styles... jusque là tout est parfait...
sauf ce satané apostrophe qui n'apparait pas.. obligé de transformer mon champ en champ HTML et du coup... n'accepte plus mes setTextFormat...
 
que faire ???
 
Merci !!
 
Freed

Reply

Marsh Posté le 23-11-2006 à 15:23:34   

Reply

Marsh Posté le 23-11-2006 à 15:40:45    

normalement, le fait de passer en html ne change rien au setTextFormat.
Pour les apostrophes, je regarderais plutot du côté de ton XML.
D'ou viens-t-il ? A quel format de caractére est-il enregistré etc ...
Post un peu de code ou ton xml (ou les 2) pour voir.

Reply

Marsh Posté le 23-11-2006 à 17:30:00    

j'ai essayé les trois formats de XML, (unicode, ansi et utf-8), le fichier XML est saisi à la main avec notepad, il est interpreté dans flash par la methode classique, mais à chaque fois mes apostrophes deviennent des &apos, j'ai reussi à virer mes &apos avec une fonction bidon que j'ai nommé unhtmlentites .. mais je vais surement etre confroné au même probleme avec d'autres caractères spéciaux.. ce qui est etrange c'est que les accents sont bien interpretés.. c juste l'apostrophe et le & par exemple
 

Code :
  1. function unhtmlentities(str)
  2. {
  3. str = String(str);
  4. if(str.indexOf("'" ) != -1) {
  5. strArray = str.split("'" );
  6. newStr = strArray.join("\'" );
  7. return newStr;
  8. }
  9. }


 
voici mon xml
 

Code :
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <home>
  3. <vignette>
  4. <icone>e_img/diaporama/vignettes/01.jpg</icone>
  5. <photo>e_img/diaporama/photos/01.jpg</photo>
  6. <prenom>Channa</prenom>
  7. <pays>Cambodge</pays>
  8. <titre>L'enfant du cambodge</titre>
  9. <texte>blablabla</texte>
  10. </vignette>
  11. <vignette>
  12. <icone>e_img/diaporama/vignettes/05.jpg</icone>
  13. <photo>e_img/diaporama/photos/05.jpg</photo>
  14. <prenom>Maria</prenom>
  15. <pays>Brésil</pays>
  16. <titre>L'enfant du Brésil</titre>
  17. <texte>ici le texte1</texte>
  18. </vignette>
  19. <vignette>
  20. <icone>e_img/diaporama/vignettes/02.jpg</icone>
  21. <photo>e_img/diaporama/photos/02.jpg</photo>
  22. <prenom>Malick</prenom>
  23. <pays>Burkina Faso</pays>
  24. <titre>L'enfant du Burkina Faso</titre>
  25. <texte>ici le texte2</texte>
  26. </vignette>
  27. <vignette>
  28. <icone>e_img/diaporama/vignettes/03.jpg</icone>
  29. <photo>e_img/diaporama/photos/03.jpg</photo>
  30. <prenom>Adrian</prenom>
  31. <pays>Roumanie</pays>
  32. <titre>L'enfant de Roumanie</titre>
  33. <texte>ici le texte3</texte>
  34. </vignette>
  35. <vignette>
  36. <icone>e_img/diaporama/vignettes/04.jpg</icone>
  37. <photo>e_img/diaporama/photos/04.jpg</photo>
  38. <prenom>Hala</prenom>
  39. <pays>Liban</pays>
  40. <titre>L'enfant du Liban</titre>
  41. <texte>ici le texte4</texte>
  42. </vignette>
  43. </home>


Message édité par freed102 le 23-11-2006 à 17:30:57
Reply

Marsh Posté le 23-11-2006 à 17:41:37    

notepad = pas bien !
D'abord trouve toi un éditeur de texte qui puisse enregistrer ton fichier en UTF-8 et ensuite met <?xml version="1.0" encoding="UTF-8" ?> et non pas iso.
Apres fait des test en mettant ton textField en HTML ou non.
Ca devrait marcher

Reply

Marsh Posté le 23-11-2006 à 17:57:11    

pour info : Notepad sait enregistrer en utf-8
 
pour savoir un peu plus :
http://www.freedfromparis.com/temp/24heures/
 
le xml :
http://www.freedfromparis.com/temp [...] l/home.xml
 
un et peu de code :
 

Code :
  1. txtformat_prenom= new TextFormat();
  2. txtformat_prenom.size = 14;
  3. txtformat_prenom.font = "Verdana bold";
  4. txtformat_prenom.color = 0xBC0006;
  5. txtformat_loader= new TextFormat();
  6. txtformat_loader.size = 17;
  7. txtformat_loader.font = "Verdana bold";
  8. txtformat_loader.color = 0xBC0006;
  9. [...]
  10. function newHomeXML(fichier)
  11. {
  12. _root.homeXML = new XML();
  13. _root.homeXML.ignoreWhite=true;
  14. _root.homeXML.onLoad=_root.extractData;
  15. _root.homeXML.load(fichier);
  16. //trace(fichier);
  17. }
  18. function extractData(success)
  19. {
  20. vign=_root.homeXML.firstChild.childNodes;
  21. _root.idHome=random(vign.length-1);
  22. for(i=0;i<vign.length;i++)
  23. {
  24.  trace(vign[i].childNodes[0].lastChild)
  25.  _root["vignette"+(i+1)].MCvignette.loadMovie(basechemin+vign[i].childNodes[0].lastChild)
  26.  _root["vignette"+(i+1)].MCtextes.prenom.embedFonts=true;
  27.  _root["vignette"+(i+1)].MCtextes.prenom.setNewTextFormat(_root.txtformat_prenom);
  28.  _root["vignette"+(i+1)].MCtextes.prenom.text=vign[i].childNodes[2].lastChild;
  29.  _root["vignette"+(i+1)].MCtextes.pays.embedFonts=true;
  30.  _root["vignette"+(i+1)].MCtextes.pays.setNewTextFormat(_root.txtformat_pays);
  31.  _root["vignette"+(i+1)].MCtextes.pays.text=vign[i].childNodes[3].lastChild;
  32.  if(i==_root.idHome)
  33.  {
  34.  var photo:String=vign[i].childNodes[1].lastChild;
  35.  loadInClip(MCinfos.MCPhoto,basechemin+photo)
  36.  //MCinfos.titre.html=true;
  37.  MCinfos.titre.embedFonts=true;
  38.  MCinfos.titre.setNewTextFormat(_root.txtformat_titre);
  39.  MCinfos.titre.text=unhtmlentities(vign[i].childNodes[4].lastChild);
  40.  MCinfos.texte.embedFonts=true;
  41.  MCinfos.texte.setNewTextFormat(_root.txtformat_texte);
  42.  MCinfos.texte.text=unhtmlentities(vign[i].childNodes[5].lastChild);
  43.  }
  44.  //trace(_root["vignette"+(i+1)].MCvignette)
  45. }
  46. }
  47. //MCinfos.texte.htmlText=basechemin+"e_xml/home.xml";
  48. newHomeXML(basechemin+"e_xml/home.xml" );

Reply

Marsh Posté le 23-11-2006 à 18:51:50    

Alors déjà ton xml me donne ça et c'est pas bon signe :
http://zedlefou.free.fr/img/xml.gif
Essaie de le refaire ou fait des test avec un fichier nouveau.
 
Mea coulpa pour le bloc note, je savais pas.
 
En tout cas je pense que ça vient de ton fichier, pas de ton code. Au fait, je suis pas sur que le embed est très utile pour du verdana.
 
Il pése combien ton swf ??

Reply

Marsh Posté le 27-11-2006 à 14:48:21    

j'encapsule la fonte pour avoir le lissage de la police, le fichier pese 177ko tout mouillé.. c pas énorme... j'ai allégé en utilisant un bibliotheque partagée (je viens d'en découvrir le pouvoir... c'est tres tres interessant !)
 
J'ai toujours pas résolu ce probleme de caractères, l'erreur XML est surement due au fait que je ne mets pas les caractères spéciaux XML mais flash n'interprete pas les caracteres si le textField n'est pas en HTML, le probleme c'est que si je mets du HTML, j'ai l'impression que la police déconne un peu (genre je lui demande du gras dans mon textformat.. et il ne m'en mets pas !.. même avec les balises <b></b> )et j'ai aps envie d'utiliser les CSS pour l'instant sur ce projet


Message édité par freed102 le 27-11-2006 à 14:49:12
Reply

Marsh Posté le 27-11-2006 à 15:49:26    

Ah mais attend. J'aavais zappé un truc dans ton code :
_root["vignette"+(i+1)].MCtextes.pays.text=vign[i].childNodes[3].lastChild;
 
Si tu veux que ton texte soit en HTML faut pas mettre ça, mais plutot :        
_root["vignette"+(i+1)].MCtextes.pays.html = true;
_root["vignette"+(i+1)].MCtextes.pays.htmlText=vign[i].childNodes[3].lastChild;

Reply

Marsh Posté le 27-11-2006 à 15:51:40    

oui mais ça je le sais ! c ce que j'ai fait pour tester ! mais mes champs ne prennent plus en compte les textFormat quand mes textfields sont en html

Reply

Marsh Posté le 27-11-2006 à 16:22:50    

Normalement ça change rien pourtant
 :heink: Quel version de flash ?

Reply

Marsh Posté le 27-11-2006 à 16:22:50   

Reply

Marsh Posté le 27-11-2006 à 16:33:49    

8.0 :(

Reply

Marsh Posté le 28-11-2006 à 10:10:21    

maintenant j'ai un probleme de retour chariot ! <br /> et \n ne marchent pas si je mets pas un textField en HTML... que faire ?

Reply

Marsh Posté le 28-11-2006 à 13:39:55    

utilise des CDATA ...

Reply

Marsh Posté le 28-11-2006 à 13:42:54    

j'ai tenté.. mais ça ne m'a pas vraiment aidé !.. bref j'ai évité les retours à la ligne et ça devrait aller !

Reply

Marsh Posté le 28-11-2006 à 13:43:57    

utilise vriament des CDATA, je t'assure, c'est comme ça qu'on fait ...

Reply

Marsh Posté le 28-11-2006 à 13:50:26    

oké !! marchi !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed