Ich habe eine Kachel-basierte Plattform-Spiel, wo die Kacheln derzeit in farbigen Rechtecke mit der Funktion fillRect gerendert werden. Ich habe ein Spritesheet, mit dem ich stattdessen die Rechtecke rendern möchte. Jede Kachel und jedes Sprite hat eine Breite und Höhe von 32 Pixeln. Ich weiß, dass ich eine Ladefunktion benötige, wenn ich ein Bild zuschneide, aber ich bin mir nicht sicher, wohin es gehen soll, da ich die Sprites 60 Bilder pro Sekunde zuschneiden und zeichnen muss. Heres Geige mein js - https://jsfiddle.net/LsLpyn8p/4/Sprites nicht auf html5 Leinwand
oder unter dem Code:
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var width = 6;
var height = 3;
var tileSize = 32;
var counter = 0;
var playerUp = false;
setInterval(gameLoop, 1000/30);
function gameLoop() {
ctx.fillStyle = "white";
ctx.fillRect(0, 0, canvas.width, canvas.height);
for (var y = 0; y < height; y++) {
for (var x = 0; x < width; x++) {
posX = (x * tileSize) + 1 * x;
posY = (y * tileSize) + 1 * y;
// ctx.fillStyle = "green";
// ctx.fillRect(posX, posY, tileSize, tileSize);
var spriteSheet = new Image();
spriteSheet.src = 'https://pasteboard.co/GMAwgYX.png';
ctx.drawImage(spriteSheet, 0, 4 * tileSize, tileSize, tileSize, posX, posY, tileSize, tileSize);
}
}
ctx.fillStyle = "red";
ctx.fillRect(50, counter, tileSize, tileSize);
if (playerUp == true) {
counter--;
} else {
counter++;
}
if (counter == 100) {
playerUp = true;
} else if (counter == 0) {
playerUp = false;
}
}
Jede Hilfe appricated ist dank
Ihre .src Links in HTML nicht IMG https://ibb.co/e5K5Qb –
oops i Ich brauchte ein Online-On für Geige, es ist ein PNG, aber es funktioniert immer noch nicht –
Sie müssen Bild-URL zu 'https: // imag ändern e.ibb.co/hZe5Qb/levelOne.png' und dann Achtung: Das Bild wird asynchron geladen. Wenn Sie also versuchen, es zu zeichnen, ist das Bild noch nicht geladen. – MysterX