0
私はアニメーションを記述することができますが、キーボード入力を理解していますが、私はすべてをまとめるのに苦労しています。私は基本的に接続4ゲームをコーディングしていますが、私は問題を単純化しています。JavaScriptのHTMLキャンバスとスクリプトアニメーション
が
function keyboardMove(e){
switch(e.keyCode) {
case 32:
movePiece(0, 0, 1000);
break;
}
movePiece(movePiece関数を呼び出すスペースキーIを押す)下にキャンバスの上から円を移動します。私は0.1で25ミリ秒ごと
function movingPiece(x, startY, endY){
var y = startY;
while(y<endY)
{
setInterval(function(){
b_ctx.globalCompositeOperation="destination-over";
b_ctx.fillStyle = "yellow";
b_ctx.beginPath();
b_ctx.arc(x, startY, 45, 0, Math.PI*2, true);
b_ctx.fill();
}, 25);
y+=0.1;
}
}
アニメーションは、少なくともではない視覚的に仕事をしたりしないのY位置を更新しましたので、これはゆっくりと起こるしたいです。私は誰かがキーボード・プレスの後でアニメーションを完成させる最善の方法を説明できたらうれしいです。
、whileループは立て続けにすべてのこれらの新しい間隔を設定します。 25ミリ秒後に、これらのインターバルはすべて最初に実行されます。そして2回目は25ms後。等々。あなたはおそらく、累積遅延を伴うsetTimeoutを探していたでしょう。より洗練されたソリューション:requestAnimationFrameを使用し、フレーム間の経過時間に応じて位置を更新し、アニメーションが終了するまで新しいフレームを要求します。 –