[AS3] soucis avec un htmlText / XML / CSS [Résolu]

Messages postés
7
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
23 novembre 2009
- - Dernière réponse : goldorius
Messages postés
7
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
23 novembre 2009
- 23 nov. 2009 à 17:15
Bonjour à tous,

Mon soucis est simple, je charge un contenu textuel dans flash via un xml externe avec css.

Tout fonctionne à merveille pour ce qui est de la couleur du texte et quelques fonctions de mise en forme :

.unexemple {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #FFFFFF;
font-weight: bold;
}


mais il refuse de prendre un compte un background-image par exemple.

Il serait alors possible de passer par le XML plutôt que par le CSS avec une balise mais l'image recouvre mon texte ...

Je suis un peu perdu, toute aide sera bienvenue.
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011
3
Merci
Moi je te propose et conseille ceci :
<c img="rouge.jpg">"mon titre mon titre mon titre"</c>


Ensuite il te faut juste recuperer l'attribut "img" lors duparsing du xml.


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Orange73
Messages postés
7
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
23 novembre 2009
0
Merci
Autant pour moi, pas de background-image pour un textfield dans Flash : http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/text/StyleSheet.html
Commenter la réponse de goldorius
Messages postés
7
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
23 novembre 2009
0
Merci
Pas de réponse, ma demande doit être vague ou incomplete alors voici un bout de code posté le 15/02/2008 par lelutinvert sur ce même forum, et qui reprend la méthode que j'utilise pour travailler avec un xml et css :

Exemple XML :
<?xml version= "1.0" encoding="utf-8" ?>
<?xml-stylesheet href="fiche.css" type="text/css" ?>
<Mon_rapport>
 <Menu_1>
  <Mon_titre>
  À QUI LE TOUR ?
  </Mon_titre>
  <Ma_consigne>
  Maintenant, vous allez savoir comment utiliser du contenu  XML formaté à l'aide de feuilles de styles CSS.
Attention, l'entête du contenu des styles CSS ne doit pas contenir une entête comme :
 @charset "utf-8";. 
  </Ma_consigne>
 </Menu_1>
 <Menu_2>
  <Mon_titre>
   ABRACADABRANTESQUE :
  </Mon_titre>
  <Ma_consigne>
   Grâce à sa structure XML, l'import de contenu XML peut être formaté par des styles CSS d'un fichier externe, dont les noms sont ceux des balises XML.
  </Ma_consigne>
 </Menu_2>
</Mon_rapport>


Fichier CSS :
Mon_rapport {
 font-family: Verdana, Arial, Helvetica, sans-serif;
}
Mon_titre {
 font-size: 20px;
 color:#336600;
 text-indent: 30pt;
}
Ma_consigne {
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 12px;
 color:#990000;
 display: block;
}


//Propriétés :
  
  //Contient les objets du champ texte
  private var _zoneTexte:TextField;
  private var _stylesTxt:StyleSheet;
  
  //Pour recueillir les données de styles
  private var _reqCSS:URLRequest;
  private var _stylesCSS:StyleSheet;
  private var _chgtFichierCSS:URLLoader;
  
  //Pour recueillir les données au format XML
  private var _reqXML:URLRequest;
  private var _contenuXML:XML;
  private var _chgtFichierXML:URLLoader;
  
  //Contructeur:
  public function AffTextes() {
   
   //Création des variables recevant les chargements
   _stylesTxt  = new StyleSheet();
   _contenuXML = new XML();
   
   //Affichage du champ sur la scène (this)
   affChampTxt(this);
   
   //Les adresses des fichiers à télécharger
   _reqCSS = new URLRequest("fiche.css");
   _reqXML = new URLRequest("Texte.xml");
   
   //Lancement de l'affichage XML formaté CSS
   chgtStylesCSS();
   
  }
  
  //Méthodes :
  
  //Affichage du champ de textes
  private function affChampTxt(cible:MovieClip):void {
   _zoneTexte = new TextField();
   cible.addChild(_zoneTexte);
   _zoneTexte.selectable = false;
   _zoneTexte.wordWrap = true;
   //Dans cet exemple, les valeurs sont entrées en dur,
   // mais elles devraient être des paramètres
   _zoneTexte.width =  500;
   _zoneTexte.height = 400;
   _zoneTexte.x = 70;
   _zoneTexte.y = 30;
  }
  
  //Chargement des données CSS
  private function chgtStylesCSS():void {
   _chgtFichierCSS = new URLLoader();
   _chgtFichierCSS.addEventListener(IOErrorEvent.IO_ERROR, retourneErreur);
   _chgtFichierCSS.addEventListener(Event.COMPLETE, appliStyles);
   _chgtFichierCSS.load(_reqCSS);
   
  }
  
  //À la fin du chargement CSS
  private function appliStyles(e:Event):void {
     _stylesTxt.parseCSS(e.currentTarget.data);
     _zoneTexte.styleSheet = _stylesTxt;
     chgtXML();
  }
  
  //Chargement des données XML
  private function chgtXML():void {
   _chgtFichierXML = new URLLoader(_reqXML);
   _chgtFichierXML.addEventListener(IOErrorEvent.IO_ERROR, retourneErreur);
   _chgtFichierXML.addEventListener(Event.COMPLETE, AffChampTexte);
  }
  
  //Retourne toute erreur de chargement
  private function retourneErreur(err:Event):void {
   _zoneTexte.text = "Erreur lors du chargement des données XMl : "+err;
  }
  
  //À la fin du chargement XML, appel du texte à afficher
  //En jouant sur le nom des balises XML, on peut sélectionner des extraits du contenu
  private function AffChampTexte(e:Event):void {
   _contenuXML = XML(e.currentTarget.data);
   //Exemple du contenu total
   //_zoneTexte.htmlText = _contenuXML;
   //Exemple du contenu de la balise Menu_1
   _zoneTexte.htmlText = _contenuXML.Menu_1;
   //Exemple du contenu de la balise Menu_2
   //_zoneTexte.htmlText = _contenuXML.Menu_2;
   
  }
  
 }
 


Ma question est simple, j'aimerai qu'en spécifiant dans le xml (car dans le css c'est pas possible cf. post du dessus) je puisse ajouter un fond (couleur ou image) pour certaines lignes de texte.

Un exemple serait d'ajouter une image via xml seulement celle-ci recouvre le texte une fois affiché dans le textField de flash...

Merci pour votre aide.
Commenter la réponse de goldorius
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011
0
Merci
Si tu charge l'image apres l'affichage de ton texte c'est normal que celle ci recouvre le texte car a chaque fois que tu ajoute un enfant via addChild() cet enfant est ajouté a une profondeur +1.

Donc il faudrait changer cette profondeur avec swapChildren. entre ton texte et ton image.


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
Commenter la réponse de Orange73
Messages postés
7
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
23 novembre 2009
0
Merci
Merci Orange73, hum si simple que ca ?

cible.addChild(_zoneTexte);
affiche mon textfield avec les données xml (image et texte confondu).

Il ne me reste donc plu qu'à trouver comment cibler mon image dans le texteFIELD ?
Commenter la réponse de goldorius
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011
0
Merci
cible.addChild(_zoneTexte);
cible.addChild(_monImage);

cible.swapChildren(_zoneTexte, monImage);


ou alors tu fais l'inverse :

cible.addChild(_monImage);
cible.addChild(_zoneTexte);



-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
Commenter la réponse de Orange73
Messages postés
7
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
23 novembre 2009
0
Merci
j'entends bien sur le principe, le soucis est que mon image est dans _zoneTexte avec mon texte dans une balise html ;) je n'ai vraiment aucunes idée de comment la cibler en réalité...

Dans mon cas, dans mon xml j'ajoute une image dans sa balise IMG et je lui indique un hspace ou vspace qui la fait se superposer à mon texte. est-il possible d'avoir l'inverse, l'image sous le texte plutôt que par dessus ?

J'imagine que je dois me compliquer la vie... j'ai entre temps fait différemment mais si tu as une solution je serais ravis de la connaitre.
Commenter la réponse de goldorius
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011
0
Merci
Peux tu donner un exemple d'un noeud xml intégrant ta balise ?


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
Commenter la réponse de Orange73
Messages postés
7
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
23 novembre 2009
0
Merci
voici l'exemple demandé :
<?xml version="1.0" encoding="utf-8"?>

   
      <c><![CDATA[
"mon titre mon titre mon titre"
       ]]></c>
   
Commenter la réponse de goldorius
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011
0
Merci
EDIT: Toujours en gardant le <![CDATA[]]>

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
Commenter la réponse de Orange73
Messages postés
7
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
23 novembre 2009
0
Merci
Oui c'est un peu ce que je me suis résigné à faire, parser une balise. Donc rien à faire du coté css/xml merci d'avoir pris le temps de me répondre Orange :)
Commenter la réponse de goldorius