4
我正在编写一个程序,用画布绘制sine curve
。
HTML:如何绘制一条可以通过画布向左移动的曲线?
<canvas id="mycanvas" width="1000" height="100">
Your browser is not supported.
</canvas>
的JavaScript:
var canvas = document.getElementById("mycanvas");
if (canvas.getContext) {
var ctx = canvas.getContext("2d");
ctx.lineWidth = 3;
var x = 0,
y = 0;
var timeout = setInterval(function() {
ctx.beginPath();
ctx.moveTo(x, y);
x += 1;
y = 50 * Math.sin(0.1 * x) + 50;
ctx.lineTo(x, y);
ctx.stroke();
if (x > 1000) {
clearInterval(timeout);
}
}, 10);
}
这工作真的很好:http://jsfiddle.net/HhGnb/
不过,现在我只能提供说100像素的画布宽度,所以只有最左边100像素曲线可以被看到。 http://jsfiddle.net/veEyM/1/
我想存档这个效果:当曲线的右边的点大于画布的宽度时,整条曲线可以向左移动,所以我可以看到曲线的最右点,这有点像曲线流向左边。我可以这样做吗?
这是棘手的,因为画布不记得你画什么,而像素的颜色。您每次都需要重新绘制整个图像。所以我会保存你计算的所有分数并与他们一起工作。 – pimvdb 2011-05-17 15:18:44
赞:http://jsfiddle.net/veEyM/2/。 – pimvdb 2011-05-17 15:23:05
@pimvdb这很好,你可以发布一个答案与代码的一些解释? – wong2 2011-05-17 15:27:08