0

我在这里有一个游戏循环,它在 draw() 中呈现以下内容。期望的目标是让游戏清除画布,说“游戏结束”,然后暂停 3 秒,然后重置并继续新游戏。但是,看起来它只是将现有游戏暂停 3 秒,而不是清除和绘制“游戏结束”。它有什么问题?

    // check for game over - failed
    if (ball_y + ball_dy + ball_radius> HEIGHT-20)
    {
        game_end_start_time = new Date().getTime();

         while (new Date().getTime() - game_end_start_time < 3000)
         {

            clear();  // calls  ctx.clearRect(0, 0, WIDTH, HEIGHT);

            fillColorValue(COLOR_GREEN);
            drawFont("G A M E   O V E R", WIDTH/2-80, HEIGHT/2);

         }

        resetGame();  
        return;
    }  
4

2 回答 2

2

您的 JavaScript 代码在 UI 线程上运行。所以基本上浏览器在你的代码执行完成之前无法绘制。因为你只是循环了 3 秒,所以你所做的就是阻止浏览器做任何事情。

尝试在屏幕上绘制游戏并使用setTimeout(function(){resetGame();}, 3000);3 秒后重新开始新游戏。

于 2012-07-08T07:59:18.040 回答
0

如何在 Javascript 中编写渲染循环(动画循环):

http://hacks.mozilla.org/2011/08/animating-with-javascript-from-setinterval-to-requestanimationframe/

于 2012-07-08T10:08:30.170 回答