Salut les agrumes,
Je suis en train de jouer avec Canvas et j’ai pas mal de soucis. L’actuel est que je veux faire défiler du texte quand j’appuie sur un bouton, et que l’animation recommence à chaque appui.
Sauf que, à chaque appui, le texte défile de plus en plus vite, et je n’ai pas la moindre idée de pourquoi.
Il semblerait que la speed
augmente à chaque fois, ce que je conclus comme étant que les animations se superposent les unes sur les autres, mais je ne vois pas comment "annuler" l’ancienne.
Je vous donne le MVP et un jsfiddle:
<!DOCTYPE html>
<html>
<canvas id="animationCanvas" width="500" height="500"></canvas>
<br>
<button onclick="draw()">send</button>
<script>
canvas = document.getElementById('animationCanvas');
context = canvas.getContext('2d');
function draw() {
text_x = 100
speed = 5
context.fillStyle = '#FF0000';
text = 'hello'
animate()
}
function animate() {
context.clearRect(0, 0, canvas.width, canvas.height)
context.fillText(text, text_x, 300)
var metrics = context.measureText(text);
var textWidth = metrics.width
if(text_x < 400 - 10 - textWidth) {
text_x = text_x + speed;
}
requestAnimationFrame(animate)
}
</script>
</html>
Des idées de comment faire ?
+0
-0