1
私はこのコードを画面上に描きますが、何らかの理由でキャンバスに何も表示されません。 requestAnimFrameと全く関係がない可能性は非常に高いですが、これが問題だと私は信じています。 描画関数のvar y
は、Asin(kx - omega * t)の単純な正弦波関数でなければなりません。ここで、kは2π/波長の波数です。requestAnimationFrameはキャンバス上に何も描画しません
Javascriptを:
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var cx = 0,
t = 0,
Amp1 = 200,
Wav1 = 100,
omega = 0.01;
function draw(x, t) {
var y = Amp1 * Math.sin(x(2 * Math.PI/Wav1) - omega * t) + 999;
ctx.beginPath();
ctx.moveTo(t + 100, y);
ctx.lineTo(t + 100, y + 1);
ctx.stroke();
ctx.closePath();
}
window.requestAnimFrame = (function (callback) {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {
window.setTimeout(callback, 100);
};
}());
function animate() {
setInterval(function() {
window.requestAnimFrame(animate);
var newX = cx,
newT = t;
cx += 0.5;
t += 0.5;
draw(newX, newT);
}, 50);
}
animate();
はEDIT:Amp1
とWav1
はシアンを予定されている理由は本当にわかりませんか?
それをクリアするためのおかげで:P私は999を追加した理由として唯一の理由は、それが画面外に行かなかったように、キャンバスを、それをダウンシフトすることでした。おそらく、私はシフトをして少し外に出た。おっとっと。 – CooperCape
メモ '*'演算子を 'x *(2 * Math.PI/Wav1)'に追加しました。なぜならxを関数として使用しようとしていたからです。 –
それはおそらくそれが働いていなかった理由です。タイプミスではなく、 'x()= x *()'という悪い仮定です。少なくとも私は将来の参照のために知っている。 – CooperCape