0

我注意到我的画布代码中有一些奇怪的东西:我正在制作一个带有小飞鬼的游戏。鬼的课程如下。当我通过手动添加代码来绘制 1 或 2 个 em 并通过每帧更新 x 让 em 向右飞行时,例如一切运行顺利且正常。

现在我运行另一个测试,每 100 帧向数组添加一个重影,将其 x 更新 100,然后将该重影绘制到帧中。(代码在第一个块下方,即绘制函数)。

现在的问题是它们实际上是被添加和绘制的,但是直到我通过单击任务栏使窗口处于非活动状态之前,我才在板上看到它们。

Any1 知道这里出了什么问题?

    /* 
 * Class for little ghosts
 */
function Ghost (name) {
    this.name = name;
    this.ghost = new Image();
    this.ghost.src = "img/ghost.png";
    this.ghostWidth = 150;
    this.ghostHeight = 100;
    this.ghostSpriteOffsetX = 0;
    this.ghostSpriteOffsetY = 0;
    this.ghostX = 0;
    this.ghostY = 0;
}
Ghost.prototype.drawGhost = function() {
    context2D.drawImage(this.ghost, this.ghostSpriteOffsetX, this.ghostSpriteOffsetY, this.ghostWidth, this.ghostHeight, this.ghostX, this.ghostY, this.ghostWidth, this.ghostHeight);
};
Ghost.prototype.goToX = function(x) {
    this.ghostX = x;
};
Ghost.prototype.goToY = function(y) {
    this.ghostY = y;
};
Ghost.prototype.turnPink = function() {
    this.ghostSpriteOffsetX = 0;
};
Ghost.prototype.turnBlue = function() {
    this.ghostSpriteOffsetX = 150;
};
Ghost.prototype.turnPurple = function() {
    this.ghostSpriteOffsetX = 300;
 };

-

function draw()
{
// clear board
context2D.clearRect(0, 0, canvas.width, canvas.height);

if(frame%100==0){
    ghosts[ghostId] = new Ghost("g-"+frame);
    ghosts[ghostId].goToX(frame-100);
    ghostId++;
}
// Draw ghost
for (i=0; i<ghosts.length; i++)
{
    ghosts[i].drawGhost();
}



frame++;
}
4

0 回答 0