Recuperation donnees xml en cross domain

Résolu
Ariranha Messages postés 79 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 27 juillet 2011 - 15 oct. 2009 à 20:11
Ariranha Messages postés 79 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...

2 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
15 oct. 2009 à 22:03
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'
3
Ariranha Messages postés 79 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 27 juillet 2011
16 oct. 2009 à 10:09
Merci beaucoup...
0
Rejoignez-nous