让循环睡眠并执行我的代码延时

时间:2013-10-11 13:01:18

标签: java android multithreading

我正在尝试制作游戏。我使用了很多方法,但结果不好。

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循环运行缓慢。但是发生的事情是我的精灵也开始变得很慢,因为它每2秒改变它的位置......因为我睡了2000毫秒:(

提前谢谢你们。

1 个答案:

答案 0 :(得分: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时间窗口花费更长时间的情况;你需要实现某种帧丢弃技术