Problème de setInterval dans une Classe
Bonjour,
j'ai une classe Compteur dans laquelle, un set Interval doit lancer le départ d'un compteur.
L'affichage fonctionne, mais je n'arrive pas à faire fonctionner mon setInterval dans mon .Fla, le compteur reste à 1.
J'ai mis ci dessous les méthodes comportants le setInterval et la fonction qu'il doit lancer.
Citation:
class Compteur
{
public function beginInterval():Void
{
intervalId = setInterval(this,"lancerCompteRebours",1000);
}
public function lancerCompteRebours(affichageCompteRebours:TextField, Atteindre:Number):Void
{
_difference = Math.round((Atteindre-getTimer())/1000);
_heures = Math.floor(_difference/3600);
_minutes = Math.floor(_difference/60)-(_heures*60);
_secondes = Math.floor(_difference-(_heures*3600)-(_minutes*60));
_heures = _heures<=9 ? _heures=_heures : _heures;
_minutes = _minutes<=9 ? _minutes=_minutes : _minutes;
_secondes = _secondes<=9 ? _secondes=_secondes : _secondes;
affichageCompteRebours.text = _heures+":"+_minutes+":"+_secondes;
if (_difference == 0)
{
// Action à executer quand temps est terminé
clearInterval(intervalId);
}
};//fin fonction lancerCompteRebours
}//fin class compteur
J'ai réécrit la classe et elle fonctionne
Citation:
class Compteur
{
//propriétés privés
private var _vHeures:Number=0;
private var _vMinutes:Number=1;
private var _vSecondes:Number=0;
private var _tempsAtteindre:Number= _vHeures*60*60*1000 + _vMinutes*60*1000 + _vSecondes*1000 + getTimer();
private var intervalId:Number;
private var heures:Number;
private var minutes:Number;
private var secondes:Number;
private var difference:Number;
private var _affichage:TextField;
public function set affichage(Contenu:TextField)
{
_affichage = Contenu;
}
public function get affichage()
{
return _affichage;
}
public function beginInterval()
{
intervalId = setInterval(this, "lancerCompteRebours", 1000);
}
public function lancerCompteRebours()
{
difference = Math.round((_tempsAtteindre-getTimer())/1000);
trace (difference);
heures = Math.floor(difference/3600);
minutes = Math.floor(difference/60)-(heures*60);
secondes = Math.floor(difference-(heures*3600)-(minutes*60));
//
heures = heures<=9 ? heures=heures : heures;
minutes = minutes<=9 ? minutes=minutes : minutes;
secondes = secondes<=9 ? secondes=secondes : secondes;
affichage.text = heures+":"+minutes+":"+secondes;
if (difference == 0)
{
// Action à executer quand temps est terminé
}
};//fin fonction lancerCompteRebours
}//fin class compteur