Ich habe eine Kachel-Array, das wie so aussieht:gleiche Rechteck trotz unterschiedlicher Arraywert gezeichnet
var gameCanvas = document.getElementById('canvas');
var ctx = gameCanvas.getContext("2d");
var mapArray = [
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[1,1,0,0,0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0],
[1,1,1,1,0,0,0,0,0,0,1,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0],
[1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,3,0,0,0]
];
und eine Schleife, die von diesem Kartenkacheln auf die Leinwand zieht
var posX = 0;
var posY = 0;
for(i=0; i < mapArray.length; i++){
for(j=0; j < mapArray[i].length; j++){
if(mapArray[i][j] == 1){
ctx.rect(posX, posY, 32, 32);
ctx.fillStyle="black";
}
if(mapArray[i][j] == 2){
ctx.rect(posX, posY, 32, 32);
ctx.fillStyle="red";
}
if(mapArray[i][j] == 3){
ctx.rect(posX, posY, 32, 32);
ctx.fillStyle="blue";
}
ctx.fill();
posX += 32;
}
posX = 0;
posY +=32;
}
Jedes ‚1‘ im Array wird wie erwartet als schwarzes Quadrat angezeigt. Das Problem ist, jede '2' und '3' werden auch als ein schwarzes Quadrat angezeigt, trotz der Deklaration einer anderen Farbe in der fillStyle
dieser if-Anweisung.
Wenn protokolliert, gibt jede if-Anweisung den Wert (1,2 oder 3) wie erwartet zurück.
So beginPath verwenden, um die Rects zu trennen, sonst sind sie Teil der gleichen Form betrachtet werden. Gut zu wissen. Danke, das war hilfreich. –