我一直在使用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是如何工作的。
任何帮助将不胜感激。我已经花了很多时间在这个游戏上工作(主要是艺术)并且不想因此而放弃。
由于
答案 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);
}
希望这会有所帮助:)