Slick2D如何启动动画,暂停它直到发生某些事情,并恢复它?

时间:2014-05-11 17:39:15

标签: java animation lwjgl slick2d

我一直在使用Slick2D(java)制作一个基于状态的游戏,并达到了'死胡同'。

我有一个由2帧组成的动画。我希望在用户运行程序时停止动画。当他点击时,第二帧应该出现0.5秒,然后它应该返回到第一帧,并再次暂停,直到用户再次点击。

类似的东西:

ani.draw(150,150); //draw the animation
ani.stopAt(0);     //the animation stops at it's first frame
~~~~user clicks~~~~
ani.start();
ani.stopAt(1); //here it stops at the second frame. Pretty sure there's another way to do it but that's not the problem.
~~~~wait for 0.5 secs~~~~ (here's the part I need)
ani.start();
ani.stopAt(0); // return to the first frame again

我尝试使用Thread.sleep但是无法使其工作 - (我猜)它跳得很快到第一帧你根本看不到第二帧。也许我只是不明白Thread.sleep是如何工作的。

任何帮助将不胜感激。我已经花了很多时间在这个游戏上工作(主要是艺术)并且不想因此而放弃。

由于

1 个答案:

答案 0 :(得分:1)

你需要这样的东西:

//Declare variables:

float coolDown = 0f;
boolean cooling = false;

...

//In the update() method:

if (gc.getInput().isMouseButtonPressed(0)) {
    cooling = true;
    ani.setCurrentFrame(1);
}
if (cooling) {
    coolDown += 0.1f * delta; //Increases the coolDown by a constant amount each frame
}
if (coolDown >= 500) {  
     //Change '500' to a larger number for a longer wait. NOTE: 500 is NOT 500 milliseconds.

    cooling = false;
    coolDown = 0f;
    ani.setCurrentFrame(0);
}

希望这会有所帮助:)