如何在libgdx中编写一个定时器来导致运行时

时间:2015-11-25 12:18:26

标签: java android libgdx runtime

我最近用这个QuizDialog界面创建了一个libgdx游戏 我从这里的不同教程中添加了CountDownTimer,但是当我执行游戏时,它会告诉

it "assigns the requested contact to @contact" do
  params = {user_id: user.id, id: @contact.id}
  get :show, params
  expect(:contact).to be(@contact)
end
到目前为止,这是我的代码,

Exception in thread "LWJGL Application" java.lang.RuntimeException: Stub!
at android.os.CountDownTimer.<init>(CountDownTimer.java:4)
at com.boontaran.games.SICT.LevelQuizDialog$2$1.<init>(LevelQuizDialog.java:184)
at com.boontaran.games.SICT.LevelQuizDialog$2.clicked(LevelQuizDialog.java:184)
at com.badlogic.gdx.scenes.scene2d.utils.ClickListener.touchUp(ClickListener.java:89)
at com.badlogic.gdx.scenes.scene2d.InputListener.handle(InputListener.java:57)
at com.badlogic.gdx.scenes.scene2d.Stage.touchUp(Stage.java:346)
at com.boontaran.games.StageGame.touchUp(StageGame.java:300)
at com.badlogic.gdx.backends.lwjgl.LwjglInput.processEvents(LwjglInput.java:325)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:199)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)

}

3 个答案:

答案 0 :(得分:1)

你不需要任何花哨的东西。您可以从LibGDX中的任何位置访问帧时间,它称为delta或Gdx.graphics.getRawDeltaTime(),因为Gdx.graphics.getDeltaTime()提供了平滑版本。所以你需要做的就是让一个计数器增加这个增量和一个固定值,比如10秒。

由于你可能想倒计时我们应该减少计数器:

float time, counter = 10f;

public void update(float delta)
{
  counter -= Gdx.graphics.getRawDeltaTime();
  //if you have delta passed as a overload you can do
  counter -= delta; //This is smoothed but should not matter for a quiz game

  if (counter <= 3)
  {
    //Play annoying sound to make you stress even more
  }

  if (counter <= 0)
  {
    //Time is up!

    //You can just reset the counter by setting it equal to time again.
    //But there will almost always be left over (counter will be less then 0)
    //So if this is important (probably not for a quiz game)
    counter = time + -counter; //Add the time this round took too long.
  }
}

这就是它的全部。如果你想以秒为单位绘制时间,你应该绕counter向上。

答案 1 :(得分:0)

  

线程“LWJGL Application”中的异常java.lang.RuntimeException:Stub

您正在使用这两种导入:

import java.util.Timer;

import android.os.CountDownTimer;

还为倒数计时器创建一个变量(尽管这是我的首选风格)。

android.os.CountDownTimer countDownTimer = new android.os.CountDownTimer(4000, 4000) {

答案 2 :(得分:0)

如果我没错,你就是在桌面上运行你的游戏;您不能在桌面版本中使用Android类。它们只包含类的存根实现。

import android.os.CountDownTimer;

你制作的游戏不是应用程序。阅读有关游戏编程和游戏循环的更多信息。 This answer是一个非常简单的定时器实现的例子。