Stopper un setinterval lors d'un rollOver [Résolu]

Signaler
Messages postés
10
Date d'inscription
mercredi 2 septembre 2009
Statut
Membre
Dernière intervention
12 juin 2010
-
Messages postés
10
Date d'inscription
mercredi 2 septembre 2009
Statut
Membre
Dernière intervention
12 juin 2010
-
Bonjour à toutes et à tous ,
Je suis entrain de réaliser pour un site un menu où lorsque la souris est inactive durant 5 secondes le menu diparait j'ai appliqué la fonction setinterval + time out

voici mon code:
timeout = 5000;
once = true;

this.onmousemove = function(){
clearInterval(ID);
ID = setInterval(action, timeout);
trace("interaction");
if(once == false){
gotoAndStop(25);
once = true;
}
};

function action(){
clearInterval(ID);
trace("pas de mouvement durant 5 secondes");
if(once == true){
gotoAndPlay (60);
once = false;

}
};


Je souhaiterai lorsque ma souris effectue un roll over sur un bouton et que je ne touche plus la souris durant 5 secondes la fonction setinterval soit désactivé c'est à dire que le compte à rebours soit bloqué j'ai tenté plusieurs et divers codes avec clearIntervalID qui "tue" la fonction setime cad qu'elle s'enclenche qu'une seul fois je me prends la tête depuis 3 jours .


je souhaiterai savoir si il existe une solution
merci

5 réponses

Messages postés
10
Date d'inscription
mercredi 2 septembre 2009
Statut
Membre
Dernière intervention
12 juin 2010

Un énorme merci Pi'ère2

(dsl de te répondre si tard mais j'étais parti)

Mais je viens de trouver la solution il fallait tout simplement mettre clearInterval(ID) sur le rollover!

Merci pour tout je vais quand meme tester ton code
A+
Messages postés
235
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
26 mai 2013

Bonsoir
Est-ce une erreur de saisie ? onmousemove au lieu de onMouseMove

Pour expérimenter le code ci-dessous il faut créer un bouton appelé bt et le mettre sur la scène;

Après on peut utiliser un this.onEnterFrame = function() (sans oublier de l'arrêter en fin d'action) pour déclencher ou autre chose...

th=this;

function suivresouris() {
xm = _xmouse;
ym = _xmouse;
trace("x="+xm+" y="+ym);
}

bt.onPress = function() {
trace("bouton cliqué");
tempo = setInterval(th, "suivresouris", 100);
ts = setInterval(th, "surveilleposition", 5000);
};


function surveilleposition() {
xs = _xmouse;
ys = _xmouse;
if (xm xs && ym ys) {
trace("fonction arrêtée");
clearInterval(tempo);
clearInterval(ts);
}
}

Pi'ère2
Messages postés
235
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
26 mai 2013

Je suis à l'ouest; pour déclencher l'action il suffit d'utiliser onMouseMove.


Pi'ère2
Messages postés
235
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
26 mai 2013

Bizarre je croyais avoir mis un complément:

je re poste.

th=this;

function suivresouris() {
xm = _xmouse;
ym = _xmouse;
trace("x="+xm+" y="+ym);
}

nd=0;
th.onMouseMove = function() {
nd++;
if(nd==1){
trace("fonction démarée");
tempo = setInterval(th, "suivresouris", 100);
ts = setInterval(th, "surveilleposition", 5000);
}
};


function surveilleposition() {
xs = _xmouse;
ys = _xmouse;
if (xm xs && ym ys) {
trace("fonction arrêtée");
clearInterval(tempo);
clearInterval(ts);
nd = 0;
}
}

Pi'ère2
Messages postés
235
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
26 mai 2013

Il est temps que j'aille me coucher.

Voilà le code qui fonctionne correctement:

th = this;

function suivresouris() {
xs = xm;
ys = ym;
xm = _xmouse;
ym = _xmouse;
trace("x="+xm+" y="+ym);
if (xm xs && ym ys) {
clearInterval(tempo);
ts = setInterval(th, "arretefonction", 1000);
}
}

nd = 0;
th.onMouseMove = function() {
nd++;
if (nd == 1) {
trace("fonction démarée");
tempo = setInterval(th, "suivresouris", 100);
}
};

na = 0;
function arretefonction() {
if (na == 5) {
trace("fonction arrêtée");
clearInterval(ts);
nd = 0;
na = 0;
} else {
trace("compte à rebours commencé");
na++;
}
}


Pi'ère2