HTML5 アニメーションのしくみを理解するのに苦労しています。私はいくつかの啓蒙が必要です。
私がやりたいのは、長方形をキャンバスの下部にアニメーション化してから、キャンバスの上部に戻すことです。問題は、長方形の y 位置を正しく設定していないことです。長方形の速度を現在の速度とは異なるように設定すると、希望どおりに反応することに気付きました。長方形は上に戻りたいのですが、下に行くことになっていることを思い出しています。そのため、何をすべきかを決定しようとして立ち往生しています。
長方形の y 位置を最初に設定するにはどうすればよいですか? また、常に更新する必要がありますか?
<!doctype html>
<html>
<head>
<title>canvas animation</title>
<style>
#animated {
border: 1px solid black;
}
</style>
</head>
<body>
<h1>canvas animation</h1>
<canvas id="animated" width="500" height="300"></canvas>
<script>
var xLoc = 0;
var yLoc = 0;
var speed = 5;
window.requestAnimFrame = (function(callback) {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback) {
window.setTimeout(callback, 1000 / 60);
};
})();
function animateDown() {
var canvas = document.getElementById("animated");
var context = canvas.getContext("2d");
context.clearRect(0, 0, canvas.width, canvas.height);
context.beginPath();
context.rect(xLoc, yLoc, 300, 150); // yLoc-canvas.height = -300
context.fillStyle = "rgb(247, 209, 23)";
context.fill();
yLoc += 4;
if (yLoc > canvas.height - 150) {
yLoc -= speed;
} else if (yLoc < 0) {
yLoc += speed;
}
requestAnimFrame(function() {
animateDown();
});
}
window.onload = function() {
animateDown();
};
</script>
</body>
</html>