Ich habe ein Vogel = {} -Objekt, wo ich eine Zeichenfunktion definieren, aber das Bild erscheint nicht, wenn in der Render-Funktion aufgerufen. Könnte mich jemand auf das hinweisen, was ich falsch mache? Danke im Voraus.JS Bild nicht auf Leinwand
EDIT: Ich habe bemerkt, der Grund, warum es nicht immer angezeigt wird, ist, weil es andere Sprites auf dem Bildschirm gibt, und wenn ich sie ausschalte, erscheint der Vogel immer. Gibt es etwas, das das beheben kann?
bird = {
draw:function() {
var birdimg = new Image();
birdimg.onload = function() {
ctx.drawImage(birdimg, -20, height - 200);
}
birdimg.src = "//i.stack.imgur.com/nsZLM.png"; //"assets/bird.png";
}
};
function main() {
canvas = document.createElement("canvas");
//Set the width and height to the sizes of the browser
width = window.innerWidth;
height = window.innerHeight;
//Frames the game if the width is larger than 500
if(width >=500){
width = 320;
height = 480;
canvas.style.border = "1px solid #000";
evt = "mousedown";
}
//Sets the canvas sizes to the width and height variables
canvas.width = width;
canvas.height = height;
ctx = canvas.getContext("2d");
//Set the default state
currentstate = states.Splash;
document.body.appendChild(canvas);
render();
}
function render(){
//Adding bird
bird.draw();
//Loads sky.png
bgimg = new Image();
bgimg.onload = function() {
ctx.drawImage(bgimg,-20,height-200);
ctx.drawImage(bgimg,256,height-200);
}
bgimg.src = "assets/sky.png";
//Loads land img
landimg = new Image();
landimg.onload = function() {
ctx.drawImage(landimg,0,height-100);
}
landimg.src = "assets/land.png";
//Creates rectangle that colors background. THIS IS THE BOTTOM LAYER. WRITE CODE ABOVE
ctx.fillStyle="#4ec0ca";
ctx.fillRect(0,0,canvas.width,canvas.height);
ctx.stroke();
}
main() aufgerufen wird nie? 'states' existiert nicht und das Asset existiert nur auf Ihrem lokalen Computer (Sie müssen es hochladen). Berücksichtigen Sie auch die Verwendung von Variablen zum Speichern von Werten. – K3N
Ich habe es hier nicht geschrieben, aber es ist auf den ursprünglichen Code. Über die ursprüngliche Frage, hättest du irgendwas vorschlagen können? – UpARiver
Sie könnten das Vogelbild hochladen (verwenden Sie den Bild-Upload-Button im Editor) und verknüpfen stattdessen Ihren img src damit, damit wir prüfen können, ob der Vogel außerhalb des Canvas-Bereichs gezeichnet wurde oder nicht. Bereinige auch das Beispiel, das in der Frage enthalten ist, so dass es lauffähig ist (ohne "Zustände" oder zumindest mit definierten Zuständen zu verwenden, main() usw. anrufend). – K3N