我的游戏循环加速,角色留下痕迹



代码:

// create stuff
var ghObj = {
x : 0,
y : 0
}
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var ghost = new Image();
ghost.src = "ghost.png"
//define variables
var ghostMove = function () {
    ghObj.x+=(Math.floor(Math.random() * 9 - 4))
    console.log(ghObj.x)
    ghObj.y+=(Math.floor(Math.random() * 9 - 4))
}
var ghostCheck = function () {
    if (ghObj.x<0) {
        ghObj.x=0
    }
    if (ghObj.x>390) {
        ghObj.x=390
    }
    if (ghObj.y<0) {
        ghObj.y=0
    }
    if (ghObj.y>390) {
        ghObj.y=390
    }
}
var drawIm = function (sprite, position) {
    ctx.save();
    ctx.translate(position.x, position.y);
    ctx.drawImage(sprite, 0, 0, sprite.width, sprite.height, 0, 0, sprite.width, sprite.height);
    ctx.restore();
};
// begin "game" when ghost is loaded
ghost.onload = function() {
    mainLoop()
}
// main loop
    function() {
    ghostMove()
    ghostCheck()
    drawIm(ghost, ghObj)
    setInterval(mainLoop, 1000) 
}

对不起,如果它有点长。

应该发生的事情是幽灵以稳定的速度在屏幕上随机移动。相反,它随机但越来越快地移动,并在任何地方留下自己的副本。

还原功能不是应该每次都清除屏幕吗?

我弄错了游戏循环吗?提前谢谢。

function mainLoop(){
  setInterval(mainLoop,100);
}

我认为错误是显而易见的。我建议使用 setTimeout 或 requestAnimationFrame 代替...这应该删除重复项,我认为这是一种光学缺陷...

最新更新