"ralentir" les mousemove ?

4 réponses
Avatar
Une Bévue
j'ai un script qui suit l'événement "mousemove" mais ça allume le
ventilateur de mon portable.

y a t'il un moyen pour échantilloner les "mousemove" je veux dire au
lieu que mes calculs laissés par mouse move tournent en boucle, je
souhaiterait, par exemple ne raffaraichir la position de la souris que
toutes les 100ms voire moi.

ce qui devrait éviter une surchauffe, d'autant que l'utilisateur ne
bouge pas si vite que cela la souris.

c'est pour prendre la position de la souris sur une roue de couleur.

4 réponses

Avatar
Doug713705
Le 24-01-2014, Une Bévue nous expliquait dans
fr.comp.lang.javascript
(<lbtffk$nd7$) :

j'ai un script qui suit l'événement "mousemove" mais ça allume le
ventilateur de mon portable.

y a t'il un moyen pour échantilloner les "mousemove" je veux dire au
lieu que mes calculs laissés par mouse move tournent en boucle, je
souhaiterait, par exemple ne raffaraichir la position de la souris que
toutes les 100ms voire moi.

ce qui devrait éviter une surchauffe, d'autant que l'utilisateur ne
bouge pas si vite que cela la souris.



Je ne sais pas comment tu gères ton affaire mais
setInterval() devrait pouvoir t'aider.

http://www.w3schools.com/jsref/met_win_setinterval.asp

--
Reprends tes walkyries pour tes valseurs maso
Mon cheval écorché m'appelle au fond d'un bar
Et cet ange qui me gueule viens chez moi mon salaud
M'invite à faire danser l'aiguille de mon radar
-- H.F. Thiéfaine, Les dingues et le paumés
Avatar
SAM
Le 24/01/14 11:32, Une Bévue a écrit :
j'ai un script qui suit l'événement "mousemove" mais ça allume le
ventilateur de mon portable.



sans compter que sur certains IE ...

y a t'il un moyen pour échantilloner les "mousemove" je veux dire au
lieu que mes calculs laissés par mouse move tournent en boucle, je
souhaiterait, par exemple ne raffaraichir la position de la souris que
toutes les 100ms voire moi.



pour faire ça, et comme dit par ailleurs, on lance par une autre
fonction à intervalles réguliers la fonction d'observation du mulot

ce qui devrait éviter une surchauffe, d'autant que l'utilisateur ne
bouge pas si vite que cela la souris.



ou alors la fonction d'observation ne "calcule" que si le mulot a bougé
de plus de x pixels ?

c'est pour prendre la position de la souris sur une roue de couleur.



Ben ... les calculs sont si longs que ça ?

Peut-être "voir" quelle était la dernière positon et la plage colorée
correspondante afin de ne commencer à "calculer" que si on en est sorti?

Enfin ... si toutefois la roue est colorée par plages
(faire une sorte de "map" de balise "img" quoi, comme en html.2)


Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
Une Bévue
Le 24/01/14 15:33, SAM a écrit :

sans compter que sur certains IE ...



Ma religion m'interdit d'utiliser IE...

y a t'il un moyen pour échantilloner les "mousemove" je veux dire au
lieu que mes calculs laissés par mouse move tournent en boucle, je
souhaiterait, par exemple ne raffaraichir la position de la souris que
toutes les 100ms voire moi.



pour faire ça, et comme dit par ailleurs, on lance par une autre
fonction à intervalles réguliers la fonction d'observation du mulot



mouais OK.

ce qui devrait éviter une surchauffe, d'autant que l'utilisateur ne
bouge pas si vite que cela la souris.



ou alors la fonction d'observation ne "calcule" que si le mulot a bougé
de plus de x pixels ?

c'est pour prendre la position de la souris sur une roue de couleur.



Ben ... les calculs sont si longs que ça ?



ben quelque soit la longueur des calculs, j'imagine que quand ils sont
fini, je veux dire, une première boucle, ça retourne automatiquement
dans le mousemove non ?

Peut-être "voir" quelle était la dernière positon et la plage colorée
correspondante afin de ne commencer à "calculer" que si on en est sorti?



ma roue est continue au pixel près :
<http://www.script-tutorials.com/html5-color-picker-canvas/>
demo :
<http://www.script-tutorials.com/demos/315/index.html>

Enfin ... si toutefois la roue est colorée par plages
(faire une sorte de "map" de balise "img" quoi, comme en html.2)



ah non, pas ça quand même ;-)

bon, je vais essayer setInterval, qqc du genre :

var myID = setInterval(updateColor, 500);

var updateColor = function(){
canvas.addEventListener('mousemove', mousemoveHandler, false);
};

}
var mousemoveHandler = function (event) {
console.log(new Date() + "Départ");
// process mousemove
console.log(new Date() + "Fin"); // pour voir combien de ms ça prend.
// j'arrête aussi sec la gestion de mousemove :
canvas.removeEventListener('mousemove', mousemoveHandler, false);
};

et pour arrêter setInterval :
var stopUpdateColor = function () {
clearInterval(myID);
}

j'essaie ça derechef !
Avatar
Une Bévue
Le 24/01/14 15:33, SAM a écrit :
pour faire ça, et comme dit par ailleurs, on lance par une autre
fonction à intervalles réguliers la fonction d'observation du mulot



bon, le temps de calcul, pour l'instant, est faible par rapport au
setInterval mis à 200ms, les 200ms sont "à peu près respectées" :

temps durée calcul
s ms ms
48 550 13
50 087 12
50 190 18
50 405 18
50 621 7

c'est assez fluide avec 200 ms.
entre 48.550 et 50.087 je suis peut-être repassé par le fond noir de la
roue colorée où j'inhibe le calcul.