Recuperation donnees xml en cross domain [Résolu]

Messages postés
81
Date d'inscription
mercredi 1 août 2007
Statut
Membre
Dernière intervention
27 juillet 2011
- - Dernière réponse : Ariranha
Messages postés
81
Date d'inscription
mercredi 1 août 2007
Statut
Membre
Dernière intervention
27 juillet 2011
- 16 oct. 2009 à 10:09
Bonsoir,

Je suis a l'heure actuelle sur un "module" qui permet aux utilisateurs (du site) de voir l'évolution des dons fait à l'association. Je dois recupérer cette valeur sur un xml en cross domain. Cette valeur, outre le fait quelle serve à suivre les dons, elle me permet aussi de gerer la taille d'un masque. Comme vous pouvez le voir à ce lien, j'ai une empreinte de chaussure marron qui apparait en blanc pour montrer le niveau du don avec un champs dynamique qui affiche la valeur sur le cote. Or j'ai un petit bug. Au premier chargement de la page la chaussure devient entierement blanche. Ce n'est qu'au deuxieme passage (car j'ai un setInterval qui relance une partie du code) que le masque reprend l'animation et qu'il s'arrete exactement ou il faut. A mon avis le soucis survient a la recuperation de la valeur dans le xml, car lors du premier passage le champs dynamique n'affiche pas la valeur.

Ci-dessous le code :
//Creation et paramètres du champs de texte recepteur
//Creation du champs de texte
var txt_html:TextField = this.createTextField("txt_html", this.getNextHighestDepth(), -150, -150, Stage.width, Stage.height);
//Champs de texte multiligne
this.txt_html.multiline = true;
//On active le retour à la ligne automatique
this.txt_html.wordWrap = true;
//On supprime les blancs inutiles
this.txt_html.condenseWhite = true;
//On active le rendu html
this.txt_html.html = true;
//On change la couleur
this.txt_html.textColor = 0xffffff;
//On empeche la selection
this.txt_html.selectable = false;

//Declaration de variables
//On crée une reference à _root (pour le ciblage)
var root:MovieClip = this;
//On defini l'url de base de notre swf
var adresse_swf:String = _url.substring(0, _url.split(".swf")[0].lastIndexOf("/")+1);

//Chargement d'un flux rss distant
//Url du flux distant à charger
var autre_url:String = "http://davidpage.eu/David/collecteGlobale.xml";
//Declaration d'un nouvel objet xml
var reviews_xml:XML = new XML();
//On ignore les blancs
this.reviews_xml.ignoreWhite = true;
//Lors de l'appel du fichier
this.reviews_xml.onLoad = function(success:Boolean):Void  {
if (success) {
//si le flux rss est chargé alors...
root.txt_html.htmlText = root.reviews_xml.childNodes[0].childNodes[4];
} else {
//et si le flux rss n'est pas trouvé
root.txt_html.htmlText = "No way";
}
};
//Url du flux a charger ! Ici on charge en fait le script php, avec l'url du flux en paramètre
this.reviews_xml.load(root.adresse_swf+"secu_flash.php?maVariable="+root.autre_url);

calculRatio();
function calculRatio() {
trace("____debut calculRatio____");
//On va creer une variable qui va nous servir a faire le ratio
var maValeur:Number = root.txt_html.text;
var tailleMasque:Number = Math.round (maValeur/400);

empreinteBlanche.setMask(masque);
valeurDon.textValeur.valeur.text = maValeur+"€";

masque.onEnterFrame = function() {
if (tailleMasque<1) {
masque.stop();
valeurDon.stop();
} else if (tailleMasque>=1) {
if (masque._currentframe<tailleMasque) {
masque.play();
valeurDon.play();
} else if (masque._currentframe == tailleMasque) {
masque.stop();
valeurDon.stop();
this.onEnterFrame = null;
}
}
};
}

//Relancement de l'anim 
var intervalId:Number;
var duration:Number = 10000;

function executeCallback():Void {
masque.gotoAndStop(1);
valeurDon.gotoAndStop(1);
calculRatio();
}

function beginInterval():Void {
if (intervalId != null) {
clearInterval(intervalId);
}
intervalId = setInterval(this, "executeCallback", duration);
}
beginInterval();


Merci...
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
6161
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
6
3
Merci
Question : pourquoi ne lances-tu pas ton interval une fois le xml chargé ?
Car là tu lances un calcul avec un text qui n'est pas encore chargé ...

Il suffit de lancer "beginInterval() dans ton "onLoad" et le tour est joué.

Peg'

Dire « Merci » 3

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

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

Commenter la réponse de pegase31
Messages postés
81
Date d'inscription
mercredi 1 août 2007
Statut
Membre
Dernière intervention
27 juillet 2011
0
Merci
Merci beaucoup...
Commenter la réponse de Ariranha