在主动画循环中执行另一个绘制循环5秒?

时间:2013-05-27 08:39:26

标签: javascript canvas requestanimationframe

我有一个使用requestAnimationFrame()的animate()循环的“简单”游戏:

function animate(currentTime) {
  if(playGame) {
    requestAnimationFrame( animate );
  }

  if(isCollide) {
    endTime = currentTime + 5000;
    drawCollision(currentTime);
  }

}

我想运行drawCollision()代码5秒钟,所以我做了类似的事情:

function drawCollision(currentTime) {

  if(playCollide) {
    requestAnimationFrame( drawCollision );
  }

  if(currentTime < endTime) {
    drawImage(image, x, y, height, width, rotation);
  } else {
    playCollide = false;
  }

}

但是,两个rAF呼叫似乎同时运行?或者至少调用drawCollision()之后的代码在执行drawCollision时执行。

1 个答案:

答案 0 :(得分:0)

好吧,似乎已经让它工作了,不得不在调用我的cancelAnimationFrame(animate)代码之前调用drawCollision() - 还将我的'游戏结束'代码移动到其他内部,用于drawCollision中的if循环。

cancelAnimationFrame polyFill包含在rAF中: http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/