J'ai suivi différents guides et j'ai le code de base pour une animation simple mais pour la vie de moi je ne peux pas réinitialiser correctement le canvas. La fonction clearRect() fonctionne parfaitement, mais lorsque j'essaie de retravailler un arc immédiatement après, il dessine à nouveau la somme de tous les chemins plutôt que de dessiner le seul segment du cercle. Est-ce que quelqu'un peut me dire ce que je fais mal ici, je sais que c'est une solution simple! En bref, je voudrais la page de test ci-dessous pour produire une sorte de segment de filature au lieu de dessiner juste un cercle:HTML 5 Effacement d'animation de toile 2D
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<span id="degrees_output" style="display:block;width:60px"></span>
<button onclick="continue_animation=false;">Stop</button>
<canvas id="myCanvas" width="578" height="200"></canvas>
<script>
var degrees = 0;
var continue_animation = true;
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var output = document.getElementById('degrees_output');
window.requestAnimFrame = (function(callback) {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
function(callback) {
window.setTimeout(callback, 1000/60);
};
})();
function animate() {
// update
output.innerHTML = degrees;
var radians = (degrees/180) * Math.PI;
if (degrees >= 360)
degrees = 0;
else
degrees += 1;
// clear
if (degrees % 20 == 0)
{
context.clearRect(0, 0, 578, 200);
}
context.beginPath();
// setup the line style
context.strokeStyle = '#fa00ff';
context.lineWidth = 5;
context.lineCap = 'round';
context.arc(50, 50, 20, 0, radians, false);
// colour the path
context.stroke();
context.closePath();
// request new frame
requestAnimFrame(function() {
if (continue_animation)
animate();
});
}
animate();
</script>