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