Bonjour à tous !

Voilà, je suis en train de créer un preloader pour des images. Le but de ce préloader est tout simplement d'afficher la progression du chargement de l'image avec le nombre d'octets à charger, le nombre d'octets déjà chargés, le temps écoulé et le temps restant estimé. Le chargement et le choix des images doit être déclenché par un appel javascript.
Mon problème est le suivant, j'aimerais savoir s'il existe une fonction qui permettrait d'annuler le chargement d'une image en cours pour en charger une autre car c'est apparemment mon problème.
Effectivement, si je lance le chargement d'une image puis d'une autre (avant que le chargement ne soit terminé) depuis ma page web, l'application plante et j'ai le message suivant : "Un script de cette animation ralentit l'exécution d'Adobe Flash Player 9. Si l'exécution n'est pas suspendue, il est possible que votre navigateur ne réagisse plus…"

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
stop();
 
currentTime = new Array(); // varible destinée à accueillir la date courante
theTimer = null; // timer de langement du loading
loadingImage = ""; // image en chargement
 
// définition des paramètres de la barre de chargement
_root.bar.mode = "manual";
_root.bar.minimum = 0;
_root.bar.maximum = 100;
 
//creation d'un clip invisible et d'un objet MovieClipLoader
_root.createEmptyMovieClip("mc", 1);
mc._alpha = 0;
mc_Loader = new MovieClipLoader();
mc_Ecout  = new Object();
mc_Loader.addListener(mc_Ecout);
 
mc_Ecout.onLoadProgress = function(cible, loadedBytes, totalBytes)
{
	var temps2 = new Date();
	var secondes2 = temps2.getSeconds() - currentTime['secondes'];
	var minutes2 = temps2.getMinutes() - currentTime['minutes']; 
	var heures2 = temps2.getHours() - currentTime['heures'];
	var jours2 = temps2.getDay() - currentTime['jours'];
	var tempsecoule = (jours2 * 24 * 60 * 60) + (heures2 * 60 * 60) + (minutes2 * 60) + secondes2; 
	var vitesse = Math.round(loadedBytes / tempsecoule); 
	var tempsrestant = Math.round((totalBytes - loadedBytes) / vitesse); 
	var pourcentage = Math.floor(loadedBytes / totalBytes * 100);
 
	_root.labelKo.text = convertFileSize(loadedBytes) + " / " + convertFileSize(totalBytes);
	_root.labelPourcent.text = pourcentage + "% ";
	_root.labelTempsEcoule.text  = ": " + convertTime(tempsecoule); 
	_root.labelTempsRestant.text = ": " + convertTime(tempsrestant); 
	_root.labelVitesse.text      = "Vitesse : " + convertFileSize(vitesse) +"/s";
	_root.bar.setProgress(pourcentage, 100);
};
 
mc_Ecout.onLoadComplete = function(cible)
{
	ExternalInterface.call("loadComplete");
}; 
 
mc_Ecout.onLoadError = function(cible, codeErreur)
{
	ExternalInterface.call("loadError", codeErreur);
}; 
 
//load l'image
ExternalInterface.addCallback("precharge", null, precharge);
function precharge(picture:String):Void 
{
	if (loadingImage != "")
	{
		mc_Loader.unloadClip(mc)
	}
	loadingImage = picture;
 
	getCurrentTime();
	theTimer = setInterval(loadImage,1000,picture);
}
 
function loadImage(picture)
{
	clearInterval(theTimer);
	mc_Loader.loadClip(picture, mc);
}
 
 
// récupère la date courante
function getCurrentTime()
{
	var temps = new Date();
	currentTime['secondes'] = temps.getSeconds(); 
	currentTime['minutes']  = temps.getMinutes(); 
	currentTime['heures']   = temps.getHours();
	currentTime['jours']    = temps.getDay();
}
L'utilisation du timer est un peu crade c'est vrai mais si je fais un loadClip directement dans la fonction precharge() juste après l'appel à getCurrentTime(), ça marche encore moins bien ! J'ai essayé de débugger et je pense que le soucis se situe justement au niveau de getCurrentTime() car si je ne l'exécute pas, j'arrive à changer l'image à charger et n'ai aucun message d'erreur…

Voilà, j'espère que quelqu'un pourra m'aider, merci d'avance en tout cas ! :-)

Horakty.