Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

XML, setInterval, ca merde dans les browser...

1 réponse
Avatar
v!Sion
Bonjour a tous,

J'suis en face d'un souci que je n'arrive pas trop a comprendre... alors si un
ame charitable a une idee je suis preneur. Je vous explique le topo :

J'ai une extension de la classe XML, dans laquelle je m'occupe de faire le
chargement d'un fichier XML, jusque la pas de soucis.Ensuite, j'ai un
gestionnaire d'evenement associe ? une des variables de ma classe, de facon a
ce que si une valeur de mon XML change, j'en sois prevenu dans ma scene, la
aussi pas de soucis.
Une fois mon XML charge, je met en place un reload systematique du fichier XML
via le bout de code suivant, qui utilise un setInterval :


public function XMLParam (sFile:String) {
mx.events.EventDispatcher.initialize (this);
this.ignoreWhite = true;
_sFile = sFile;
this.load (sFile);
if ( _error != true )
{
flush = setInterval( this, "reloadParam", _myInterval, _sFile ); // Flush
toutes les n secondes du xml
}
}

// fonction de flush du fichier XML
public function reloadParam(s:String):Void {
if ( _error != true ) {
this.load (s);
}
}

// supprimer le flush du fichier param
public function unFlush ():Void {
clearInterval (flush);
}
[/hr]

Tout ceci ne pose aucun probleme dans l'environnement de Flash, le fichier est
bien relu toute les n seconde, et effectivement mon event est bien dispatche si
une nouvelle valeur intervient dans mon XML. Je n'ai pas mis tout le code car
ces parties marche donc pas la peine de s'ettendre la dessus. ;)

Ce qui pose probl?me, c'est qu'une fois que je met tout ca dans une page web,
le Player Flash lit le fichier XML une fois, et ensuite j'ai l'impression qu'il
le garde en cache. J'ai beau tout essaye il ne le relit jamais reellement, il
fait comme si, il me dit que tout est bon mais non il relit rien en fait le
bougre. J'ai bien desactiver tous les caches possibles, mais non rien n'y fait,
et ce sur toutes les plateforme, OSX, Windows, ou Linux meme combat !

Si vous avec une idee, ou bien un moyen de contourner ca je suis preneur.
J'vais tenter 2-3 idees que j'ai en tete, mais bon franchement c'est l'enfer ce
plan ! :evil;

Merci ? tous,

1 réponse

Avatar
Christian Gayton
Salut
P'tet que ça pourrait t'aider...
Christian

/*
**************************************************************
* Developed by R.Arul Kumaran [] *
* for more code keep visiting [www.shockwave-india.com/blog] *
**************************************************************
version 1.1 Last updated on 9, Jan 2004
*/
/*
| Useful when you don't want your server files to be cached by both server
and browser
|
| getSkipCacheString() - Return a blank string("") when the swf is running
as a local file and
| returns a random string like
"?CacheBuster=0.0308893630281091&timestamp73037565155"
| when the swf is from a web server
|
*/
_global.getSkipCacheString = function() {
if (getSkipCacheString.isLocalPlayback) {
return "";
}
dStr = "&timestamp="+new Date().getTime();
return "?CacheBuster="+Math.random()+dStr;
};
getSkipCacheString.isLocalPlayback = _url.indexOf("file") == 0;
/*
//sample usage
#include "skipCache.as"
my_xml = new XML();
my_xml.onData = function(dta) {
trace(dta);
};
my_xml.load("myfile.xml"+getSkipCacheString());
*/