Je travaille sur la création d'un cube rotatif 3D dans un canevas HTML. Mon code ressemble à ceci

function rotateCubeZM() {
    fr = 5;
    stoppage = 1;   
    for(let i = 0;i<200;i++,fr+=dacc) {
        setTimeout(rotateCubeZ,i*fr*stoppage,1);
    }
}

Ici, dacc est un facteur de désaccélération qui ralentit la rotation. Je dois créer une friction des boutons qui ralentira encore la désaccélération du facteur x. Comment modifier le facteur de désaccélération alors que setTimeout est toujours en cours? J'ai essayé de mettre à jour la valeur de dacc avec une fonction onclick mais cela ne fonctionne pas. Ou existe-t-il un autre moyen d'appeler la fonction ci-dessus qui peut vous aider?

Merci pour l'aide.

1
ujjwal gupta 8 nov. 2019 à 08:27

1 réponse

Tu ne peux pas faire ça. Vous devez effacer le délai et définir un nouveau délai. setTimeout retunifie un identifiant unique.

// timer holds the timer identifier.
let timer = setTimeout(function, 1000);

// clear it when you click the button
clearTimeout(timer);

// and set new timer with new value
timer = setTimeout(function, 2000);
0
Kalesh Kaladharan 8 nov. 2019 à 05:36