Das Folgende ist ein Beispiel Code, den ich gerade geschrieben zeigen, dass ich bestimmte Dinge an meinem Spiel Griff:HTML5 Canvas Spiel Optimierung
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);
}
Eine kleine Erklärung : Dies ist ein einfaches Brettspiel. Zuerst wird die Leinwand auf die Brettmaße selbst gesetzt, um die Koordinaten XY richtig zu bekommen (das ist hier nicht sinnvoll, aber in meinem eigentlichen Spiel ja).
dann wird es nach dem Fenster des Spielers der Größe verändert, in Bezug auf das tatsächliche Verhältnis des ursprünglichen Plattenbildes. Das Verhältnis zu halten ist wichtig für die Qualität des Bildes. Nun erfolgt die Bewegung mit einem einfachen Timer in einer Funktion, sobald es zu einem bestimmten X und Y kommt wird die Bewegung gestoppt.
ich Schwierigkeiten haben, die Bewegung des Kreises immer ohne Pausen zu bewegen/Verzögerungen bei einigen Browsern und Geräten (wie auf einer cordova app), obwohl es in der Regel gut funktioniert. Ich weiß, dass die Verzögerungen durch die Art und Weise verursacht werden, wie ich mit den Dingen umgehe, aber warum? auch, ich habe Probleme, die Geschwindigkeit der Bewegung konstant zu halten - +3 scheint nicht in jedem Browser gleich zu bewegen.
aussieht Vielleicht in request(), INSEAD SetTimeout der Verwendung von() –
Geist zeigt, wie kann ich es mit meinem Beispiel zu integrieren? – user1938653
Schauen Sie hier für wie man Drosselung (60 Frames pro Sekunde ist ein gutes Ziel): http://StackOverflow.com/Questions/19764018/Controlling-FPS-with-RequestAnimationFrame und hier ist eine zufällige nicht-gedrosselte jsFiddle Ich fand, dass Canvas verwendet, aber benutze deinen Code natürlich: https://jsfiddle.net/0q4yLyma/ –