【发布时间】:2021-03-27 00:19:12
【问题描述】:
我正在关注 freeCodeCamp 提供的关于飞扬小鸟游戏的教程 https://www.youtube.com/watch?v=pufKO5EG8nc
但我正在使用课程来了解更多信息。
问题是,图像无法加载,而在视频中却可以正常加载。
我四处搜索并了解了 onload 事件,并在那里实现了它,但仍然没有咬,控制台中也没有错误消息。
即使没有 onload 事件,为什么视频的图像会加载,而我的却没有? >:(
我的 HTML 代码:
<canvas id="canvas" width="512" height="512">
</canvas>
我的 JS 代码:
const canvas = document.querySelector("#canvas");
class Game {
constructor(c) {
this.c = c; //canvas
this.ctx = c.getContext("2d"); // context
this.sprites = 5;
this.loadedSprites = 0;
this.player = new Image(); // define images
this.bg = new Image();
this.fg = new Image();
this.north = new Image();
this.south = new Image();
this.pX = 10; // player starting location
this.pY = 150;
// set sprite locations and load.
this.player.src = "images/crab.png";
this.player.onload = this.draw;
this.bg.src = "images/bg.png";
this.bg.onload = this.draw;
this.fg.src = "images/fg.png";
this.fg.onload = this.draw;
this.north.src = "images/obstacle.png";
this.gap = 80;
this.constant = this.north.height + this.gap;
this.north.onload = this.draw;
this.south.src = "images/obstacle.png";
this.south.onload = this.draw;
}
//draw images
draw() {
this.loadedSprites += 1;
if (this.loadedSprites >= this.sprites) {
this.ctx.drawImage(this.bg, 0, 0);
this.ctx.drawImage(this.north, 100, 0);
this.ctx.drawImage(this.south, 0, 0 + this.constant);
this.ctx.drawImage(this.fg, 0, this.c.height - this.fg.height);
this.ctx.drawImage(this.player, this.pX, this.pY);
}
}
}
let game = new Game(canvas);
【问题讨论】:
-
你说图像没有为你加载。具体发生了什么?图片加载失败?图像是否已加载但现在显示在屏幕上?或者您在控制台中是否有另一个与加载图像相关的错误?
标签: javascript html html5-canvas game-development