使用绘图API来制作类似三角函数函数曲线的动画
实际效果
完整代码
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Wave 2</title>
<link rel="stylesheet" href="../include/style.css">
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<script src="../include/utils.js"></script>
<script>
window.onload = function () {
var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d'),
angle = 0,
range = 50,
centerY = canvas.height / 2,
xspeed = 1,
yspeed = 0.05,
xpos = 0,
ypos = centerY;
context.lineWidth = 2;
(function drawFrame () {
window.requestAnimationFrame(drawFrame, canvas);
context.beginPath();
context.moveTo(xpos, ypos);
//Calculate the new position.
xpos += xspeed;
angle += yspeed;
ypos = centerY + Math.sin(angle) * range;
context.lineTo(xpos, ypos);
context.stroke();
}());
};
</script>
</body>
</html>
本例中,在drawFrame中取消了对context.clearRect的调用,这样canvas元素就不会在每一帧开始的时候擦除之前绘制的图像,使得每一帧绘制的图像都保留在canvas上