Bonjour à tous,

J'ai un petit problème avec un Timer que je vais vous expliquer ^^
Dans mon application, j'ai trois personnages qui ont en attribut 1 timer:Timer.
Celui ci est initialisé avec le constructeur. J'ai donc 3 timer différents qui ont 1 seconde d'écart chacun (respectivement 12,11 et 10 secondes).

Pour les actualiser : j'ai le code suivant :

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
                public function initTemps()
		{
			this.estSelectionne = false;
			this.peutAttaquer = false;
			
			var tpsTimer:Number = 0;
			
			//echelle correspond à 2 seconde pour 1 pts en vitesse.
			var echelleTemps:Number = 12;
			tpsTimer = ((echelleTemps-this.vitesse)*1000);
			this.timer = new Timer(tpsTimer/100,100);
			this.timer.addEventListener(TimerEvent.TIMER, compteur);
			this.timer.addEventListener(TimerEvent.TIMER_COMPLETE, compteurFin);
			
			/********** partie graphique ***********/
			
			//contour de la barre de temps
			this.contourTemps = new Shape();
			this.contourTemps.graphics.lineStyle(1.5, 0x000000);
			this.contourTemps.graphics.drawRoundRect(0,0,150,10,10);
			this.contourTemps.x = 0;
			this.contourTemps.y = 35;
			this.conteneurStats.addChild(this.contourTemps);
			
			//fondTemps
			this.fondTemps = new Shape;
			this.fondTemps.graphics.beginFill(0x000000);
			this.fondTemps.graphics.drawRoundRect(0,0,148,8,10);
			this.fondTemps.graphics.endFill();
			this.fondTemps.x = 1;
			this.fondTemps.y = 36;
			this.fondTemps.alpha = 0.5;
			this.conteneurStats.addChild(this.fondTemps);
			
			
			//barre de temps
			this.barreTemps = new Shape();
			this.barreTemps.graphics.drawRoundRect(0,0,148,8,10);
			this.barreTemps.x = 1;
			this.barreTemps.y = 36;
			this.conteneurStats.addChild(this.barreTemps);
		}
		
		private function compteur(pEvt:TimerEvent):void
		{
			var ratio:Number;
			ratio =  pEvt.currentTarget.currentCount / 100;
			
			this.barreTemps.graphics.clear();
			this.barreTemps.graphics.beginFill(0xFFFFFF);
			this.barreTemps.graphics.drawRoundRect(0,0,ratio*148,8,10);
			this.barreTemps.graphics.endFill();
		}
		
		private function compteurFin(pEvt:TimerEvent):void
		{
			this.timer.stop();
			this.peutAttaquer = true;
			dispatchEvent(new Event(Personnage.PEUT_ATTAQUER));
		}
Mes barres devraient donc s'actualiser 100 fois avant d'être entièrement chargées. Sauf que ce n'est pas le cas, les chargements sont de moins en moins précis avec la valeur du nombre. Quand je mets un chiffre proche de zéro, les timers sont bien respectés mais l'affichage n'est pas précis. Quand je mets un grand chiffre, les timers ne sont pas respectés mais l'affichage est précis.

J'aimerai donc comprendre pourquoi un tel comportement se produit , et avoir une meilleure solution en terme de programmation si c'est possible.

EDIT : J'ai cru comprendre que l'utilisation de la classe Timer était en relation avec le nombre d'images par seconde (ips), et que l'utilisation de getTimer() était préférable pour éviter ce genre de problème. Quelqu'un pourrait-t-il m'éclairer sur cette piste ?

Merci d'avance.