Javascript - =命令乘以每个循环

时间:2016-05-24 21:22:22

标签: javascript html

我是一名新的程序员,制作了我的第一个非教程游戏,我在游戏中遇到了敌人的问题。继承剧本:

function drawEnemy() {

    ctx.beginPath();
    ctx.rect(enemyXPos-=1, downs-upw, enemyWidth, enemyHeight);
    ctx.fillStyle="#ffffff";
    ctx.fill();
    ctx.closePath();

    if (enemyXPos<0) {
        startEnemy();
    }


}

在移动敌人的路线上,每当敌人重生,它的速度变快,我不想要它。问题出在drawEnemy函数中:

.loc

1 个答案:

答案 0 :(得分:1)

你的函数placeEnemy形成一个无限循环,每次执行时调用自身(通过requestAnimationFrame)。

每次执行时,

startEnemy都会调用placeEnemy。这意味着每个&#34;重新产生&#34;开始一个新的无限循环,而不取消旧的循环

placeEnemy循环修改&#34;敌人&#34;通过减去每次迭代enemyXPos来定位(1)。通过同时运行多个循环,每次新的&#34;动画帧&#34;时,1被多次减去。被解雇了。

您可以通过不调用placeEnemy中的startEnemy来解决此问题:只需重置敌人的位置,然后让相同的动画循环继续播放!