我怎么能停止我的动画圈? - JS

时间:2014-06-23 01:33:32

标签: javascript

我只使用函数进行javascript游戏,我知道它不是最好的方法,但我仍然在学习原型之前使用它们。所以,到目前为止,我有一个请求动画框架,称他自己,所以我的功能继续执行。问题是,当玩家死亡时,我想停止创建敌人,基本上,停止执行功能。更好地向您展示一些代码。 这是我的动画功能:

    function animate() {


        if (endGame() == true) {
            return;
        }

        requestAnimationFrame(animate);

        if(theBird == null && canContinue == true) {
            theBird = getBird(); // variavel com a div do bird
            setTimeout(createDrake(), Math.round(Math.random() * 800));
            setTimeout(createBrick(), Math.round(Math.random() * 3000));
            setTimeout(createBoss(), Math.round(1000 + Math.random() * 15000));
            setTimeout(createPowerUp(),  Math.round(Math.random() * 15000));


            document.addEventListener('keydown', onKeyPressed);
            document.addEventListener('keyup', onKeyReleased);  

    }
        else {
            updateBirdLocation();
            updateBirdSpeed();

            flyDrakes();
            flyBrick();
            flyBullets();
            flyPowerUp();
            flyBoss();

            checkBulletCollisions();
            checkBulletCollisionsBricks()   
            checkShipCollision();
            checkShipCollisionBricks();
            checkShipCollisionBonusP();

             checkShipCollisionBoss();
             checkBulletCollisionsBoss();

            updateScores();

            checkEnemyBulletCollisions();
            MoveArrayX(bullets2, -10);
            MoveArrayX(bullets3, -10);
            removePassingElements();




         }

}

这个是我的函数stopGame,每当玩家失败时都会调用它:

function endGame() {

    Rbutton.style.visibility= "visible";
    var RestartDiv = document.createElement("div");

    RestartDiv.id =  "RestartDiv";

    gameDiv.appendChild(RestartDiv);

    document.getElementById('RestartDiv').innerHTML += "You scored" + "  " + mobHits + " " + "points!";
    canContinue = false;

    return true; 



}

我试图阻止这是动画的第一部分:

function animate() {


        if (endGame() == true) {
            return;
        }

但如果我这样做,我的游戏会停止(就像我想要的那样),但在玩家死亡之前。

除了玩家死亡的功能之外,我没有执行任何游戏。我该如何解决这个问题?

谢谢

编辑:这是我检测玩家死亡的一个例子:

function checkShipCollisionBoss() { 
        for (var k=0; k<bossArray.length; k++) {
            if ((isCollide(BirdsDiv, bossArray[k]) ) == true){
                        endGame();

            }           

    }
}

isCollide是一个检测碰撞的功能。

2 个答案:

答案 0 :(得分:3)

然后这样做,

    function endGame() { 

     if(isCollide())    // return a boolean from this function
     {
           Rbutton.style.visibility= "visible";
           var RestartDiv = document.createElement("div");

           RestartDiv.id =  "RestartDiv";

           gameDiv.appendChild(RestartDiv);

           document.getElementById('RestartDiv').innerHTML += "You scored" + "  " + mobHits + " " + "points!";
          canContinue = false;

          return true; 
     }

    return false;
  }  

还要记住这一点,如果你要检查一个布尔值,你可以简单地给出

if(true) or if (false)

示例,

   var bool    = true;

   if(bool)
      // your stuff

答案 1 :(得分:1)

你的endGame函数总是返回true,所以endGame()== true

然后在动画功能中:

function animate() {

        if (endGame() == true) {
            return;
        }

        ...
 }

是:

function animate() {

        if (true == true) {
            return;
        }

        ...
 }

是:

function animate() {

        if (true) {
            return;
        }

        ...
 }

是:

function animate() {

        return;

        ...
 }

所以它总是返回