次は、私はちょうど私が私のゲームで特定の物事を処理表示するために書いたコード例です:HTML5キャンバスゲームの最適化
https://jsfiddle.net/qk7ayx7n/25/
<canvas id = "canvas"></canvas>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
JS:
var canvas = document.getElementById("canvas");
var ctx=canvas.getContext("2d");
canvas.width = 750; //keeping ratio
canvas.height = 587; //keeping ratio
$('#canvas').css("height", window.innerHeight);
$('#canvas').css("width", window.innerHeight * 1.277); //keeping the ratio
//and also resizing according to the window(not to overflow)
var board = new Image();
board.src = "https://s21.postimg.org/ko999yaaf/circ.png";
var circle = new Image();
circle.src = "https://s21.postimg.org/4zigxdh7r/circ.png";
ctx.drawImage(board, 0, 0);
var x = 10, y = 10;
ctx.drawImage(circle, x, y);
startMoving();
function startMoving(){
if(y > 310) return;
y+=3;
ctx.clearRect(0,0,750,587);
ctx.drawImage(board, 0, 0);
ctx.drawImage(circle, x, y);
setTimeout(function(){startMoving()}, 30);
}
少し説明これはシンプルなボードゲームです。座標X Yを正しく得るためにキャンバスをボードの大きさに設定します(これはここでは役に立ちませんが実際のゲームではそうです)。
これは、元のボードイメージの実際の比率に関して、プレーヤーのウィンドウに従ってリサイズされます。この比率を維持することは、画像の品質にとって重要である。 移動では、関数内の単純なタイマーで実行されます。移動が停止した特定のXとYに到達すると、
一部のブラウザやデバイス(コードバアプリなど)では、円の動きが途切れることなく移動するのに問題がありますが、通常は問題なく動作します。私は遅れが私が物事を扱う方法によって引き起こされることを知っていますが、なぜですか? また、私は動きの速度を一定に保つのに問題があります - すべてのブラウザで同じ+3を動かすようではありません。
はおそらく、requestAnimationFrameの()に見て、setTimeoutメソッドを使用してのINSEAD()私はそれが私の例を使用して統合する方法を示す –
マインド? – user1938653
ここでは、スロットルの仕方(60フレーム/秒が良い目標です)をご覧ください:http://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframeここではキャンバスを使用していることがわかった無制限のjsFiddleですが、もちろんあなたのコードを使用してください:https://jsfiddle.net/0q4yLyma/ –