javascriptで線形にsvgの図形を移動するスクリプトを作成するにはどうすればよいですか?私はrequestanimframeを使いたい。javascript svg animation
ここにキャンバスを使用した例を示します。私はsvgを除いて同じことをしたいだけです。
スクリプトはキャンバスへのコンテキストを取得し、javascriptを使用してコンテキストのプロパティで図形を描画します。次に、線形モーションでキャンバス上の図形のアニメーションを管理します。キャンバスのコンテキストプロパティではなく、シェイプにsvgを使用したいだけです。
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
#myCanvas {
border: 1px solid #9C9898;
}
</style>
<script>
window.requestAnimFrame = (function(callback){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000/60);
};
})();
function animate(lastTime, myRectangle){
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
// update
var date = new Date();
var time = date.getTime();
var timeDiff = time - lastTime;
var linearSpeed = 100; // pixels/second
var linearDistEachFrame = linearSpeed * timeDiff/1000;
var currentX = myRectangle.x;
if (currentX < canvas.width - myRectangle.width - myRectangle.borderWidth/2) {
var newX = currentX + linearDistEachFrame;
myRectangle.x = newX;
}
lastTime = time;
// clear
context.clearRect(0, 0, canvas.width, canvas.height);
// draw
context.beginPath();
context.rect(myRectangle.x, myRectangle.y, myRectangle.width, myRectangle.height);
context.fillStyle = "#8ED6FF";
context.fill();
context.lineWidth = myRectangle.borderWidth;
context.strokeStyle = "black";
context.stroke();
// request new frame
requestAnimFrame(function(){
animate(lastTime, myRectangle);
});
}
window.onload = function(){
var myRectangle = {
x: 0,
y: 50,
width: 100,
height: 50,
borderWidth: 5
};
var date = new Date();
var time = date.getTime();
animate(time, myRectangle);
};
</script>
</head>
<body onmousedown="return false;">
<canvas id="myCanvas" width="578" height="200">
</canvas>
</body>
なぜ 'requestAnimationFrame'を使うのではなく、なぜSVGの組み込みのアニメーションプリミティブを使用しないのですか? – robertc
私はhttp://www.i-programmer.info/programming/graphics-and-imaging/3254-svg-javascript-and-the-dom.htmlの記事を読んでいました。私はjavascript/canvasをアニメーション化する方法について学んでいる概念にこれをどのように適用するかを理解しようとしています。 – alphadev
ここでは、キャンバスではなくSVGをアニメーション化していますか? – robertc