dymytry78
Messages postés4Date d'inscriptionsamedi 23 décembre 2006StatutMembreDernière intervention21 février 2007
-
18 févr. 2007 à 15:46
ninja0701
Messages postés1Date d'inscriptionjeudi 23 octobre 2008StatutMembreDernière intervention21 janvier 2011
-
21 janv. 2011 à 23:47
Bonjour, ca doit pas bien etre compliqué et pourtant j' y arrive pas . Voila j'ai recuperé un code pour lire dans mon animation flash un texte qui s'affiche ligne apres ligne a partir d'un fichier xml, le probleme c'est apres avoir affiché la derniere ligne du fichier xml l'animation se termine sur "undefined". Moi je voudrais que l'anim recommence au debut automatiquement comment faire?
le code que j'utilise:
var replique:Number = 0;
var dialogues:XML = new XML();
dialogues.load("soustitreslionel_2.xml");
dialogues.ignoreWhite = true;
sousTitrer = function () {
if (b = dialogues.firstChild.childNodes[replique]);
chaineCommentaire = new String(a.text);
replique++;
};
lancer = setInterval(sousTitrer, 2000);
Avant toute chose, il te manquait un = pour ta condition et remplacer le point virgule par l'accollade pour ouvrir le bloc de la condition ...
Pour savoir si tu te trouves à la fin du xml, tu peux récupérer la longueur du xml : dialogues.firstChild.length
Puis au lieu de mettre : if (b == dialogues.firstChild.childNodes[replique]){
(dont j'ignore l'origine de B) mais faire ceci :
var longueur_xml :Number = dialogues.firstChild.length;
if(replique < longueur_xml){
action à exécuter
replique++;
}
( à vérifier, j'écris ça sans flash sous les yeux)
Il vaut mieux créer une variable qui contiendra le nombre de noeuds contenus dans le XML car ça évitera à flash de le recalculer toutes les 2 secondes
dymytry78
Messages postés4Date d'inscriptionsamedi 23 décembre 2006StatutMembreDernière intervention21 février 2007 21 févr. 2007 à 18:52
Merci Darkrats mais je suis un peu gogol en code actionscripts et j'ys suis aps arrivé. J'ai ajouté le = et } mais il se passait plus rien ideme en remplacant if (b == dialogues.firstChild.childNodes[replique]){ par ce que tu as proposé....
Des precisions qui sont peut etre utile a resoudre mon probleme: le a c'est le nom du champ texte et le b c'est le nom de la variable qu'il lui est affiliée. Le fichier soustitreslionel_2 fait 10 lignes.
Si quelqu'un peu me dire ou je me plante je suis preneur.
Darkrats
Messages postés212Date d'inscriptionmardi 2 novembre 2004StatutMembreDernière intervention12 mai 20081 23 févr. 2007 à 22:45
En fait, ce que tu dois donc savoir c'est quand ton xml est arrivé à la fin pour recommencer l'affichage depuis le début
Donc :
1. une variable qui va indiquer à quel noeud on se trouve, appelons là "noeud_courant"
var noeud_courant :Number = 0;
2. une variable qui va indiquer combien de noeud possède ton xml
var noeud_max :Number = dialogues.childNodes.length; // (dialogue étant ton fichier xml correctement chargé)
3. tu dois dans la fonction que tu lances en boucle, vérifier qu'on ne soit pas arrivé à la fin du xml avant de vouloir écrire le contenu
function affichage_xml(){
if(noeud_courant < noeud_max){
// Le noeud courant n'est pas le dernier
trace("contenu du noeud numéro " + noeud_courant);
// Concaténation du noeud courant
noeud_courant++;
}else{
// Le noeud est le dernier
// On affiche rien mais on remet la valeur zéro au noeud courant pour qu'il puisse de nouveau écrire le contenu du xml depuis le début
trace("fin du traitement du xml, remise à zéro");
noeud_courant = 0;
}
Il est possible que ça ne marche pas ... dans ce cas, utilise des traces pour savoir à quel endroit ça coince, ... par exemple, as-tu bien mes deux traces qui s'affichent au moment voulu ?
De plus, tu peux vérifier via des traces la valeur que prend
noeud_courant et noeud_max comme ça tu sauras si ta boucle fonctionne
bien.
Maintenant, comme tu me dis n'être pas fort en action script, je te recommenderais vivement de vérifier que ton xml est bien chargé avant de lancer ta fonction d'affichage. Je ne sais pas si tu es au courant qu'un xml ne se charge pas forcément entièrement avant de poursuivre le code ? ( plus d'explication sur ce site : media-box);
Fais quand même attention que ta fonction traîtée en boucle ne fasse pas planter flash par la lourdeur des actions à effectuer
--------- Darkrats ---------
la loi est dure mais c'est la loi
-------- Infograpix --------
ninja0701
Messages postés1Date d'inscriptionjeudi 23 octobre 2008StatutMembreDernière intervention21 janvier 2011 21 janv. 2011 à 23:47
bonjour voici mon code xml qui affiche des image avec animation je désire afficher ce code en boucle répéter toujours les images si quelqu'un peut m'aider .merci
<?xml version= '1.0' encoding='UTF-8' ?>
<header_vars>
<graphics_color>FFFFFF</graphics_color>
no