0

我正在尝试创建一个游戏。我使用了很多方法,但我得到了不好的结果。

for (Sprite sprite : sprites) {
    sprite.onDraw(canvas);             
}

我使用此代码来创建我的精灵图像。我想要的是每 8 秒一次又一次地执行相同的代码。我用了:

for (int me = 0; me < 10; me++){
    for (Sprite sprite : sprites) {
        sprite.onDraw(canvas);             
    }
    Thread.sleep(8000);
}

我认为这会使 for 循环运行缓慢。但是发生的事情是我的 Sprites 也开始移动得很慢,那就是它每 2 秒改变一次它的位置 .. 因为我有 2000 毫秒的睡眠时间 :(

提前谢谢大家。

4

1 回答 1

0

你想要做的是快速的精灵绘制,但每秒的帧速率是恒定的。:) 解决问题使用您的操作系统实时时钟等待确切的时间!

就像是:

while(1)
{
    t1 = now();
    draw_screen();
    game_logic();
    get_user_input();
    t2 = now();

    sleep(); // here wait for ((1/fps)-(t2-t1)) sec.
}

这将强制您的游戏以给定的 fps 速率运行。显然,这种方法不包括绘图例程花费的时间比实际的 1/fps 时间窗口长的情况;你需要实现某种丢帧技术

于 2013-10-11T13:06:40.347 回答