我试图在渲染类中创建一个倒计时器,一旦倒计时完成,它将加载主菜单。游戏渲染类/游戏循环内的Android倒计时时间
public void startTimer()
{
new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished)
{
}
public void onFinish()
{
Toast.makeText(Game.context, "TIMER ENDED", Toast.LENGTH_SHORT).show();
// put score into DB
// load up a different screen
}
}.start();
}
我尝试使用上面显示的那个,但是,当我使用它时,我的游戏意外关闭。这是引起游戏关闭的计时器(而不是吐司)。
任何人都知道一种方式,我可以实现这一点或修复上面给出的例子?
(定时器功能被置于 'onSurfaceCreated')
下面是从logcat的信息:
12-10 16:41:45.796:E/AndroidRuntime(5336):致命异常: GLThread 284 12-10 16:41:45.796:E/AndroidRuntime(5336):进程:com.damienrenner.spacefruitshooter,PID:5336
12-10 16:41:45.796:E/AndroidRuntime(5336): java.lang.RuntimeException:无法在未调用Looper.prepare()的线程中创建处理程序
12-10 16:41:45.796:E/AndroidRuntime(5336):在android.os.Handler(Handler.java:200)
12-10 16:41:45.796:E/AndroidRuntime(5336 ):at android.os.Handler。(Handler.java:114)
12-10 16:41:45.796:E/AndroidRuntime(5336):at android.os.CountDownTimer $ 1。(CountDownTimer.java:109 )
12-10 16:41:45.796:E/AndroidRuntime(5336):在android.os.CountDownTimer(CountDownTimer.java:109)
12-10 16:41:45.796:E/AndroidRuntime(5336):在com.damienrenner.spacefruitshooter。 GRenderer $ 1(GRenderer.java:274)
12-10 16:41:45.796:E/AndroidRuntime(5336):在com.damienrenner.spacefruitshooter.GRenderer.startTimer(GRenderer.java:274)
12-10 16:41:45.796:E/AndroidRuntime(5336):在com.damienrenner.spacefruitshooter.GRenderer.onSurfaceCreated(GRenderer.java:331)
12-10 16:41:45.796:E/AndroidRuntime (5336):at android.opengl.GLSurfaceView $ GLThread.guardedRun(GLSurfaceView.java:1501)
12-10 16:41:45.796:E/AndroidRuntime(5336):at android.opengl.GLSurfaceView $ GLThread。运行(GLSurfaceView .java:1240)
为什么不直接使用new Handler()。postDelayed? – cYrixmorten
请提供crashlog。如果我不得不猜测,我会说,你需要从主线程实例化它,如果我正确地回忆onSurfaceCreated是不是在主线程,因为Surfaceview呈现在一个单独的线程 –
我已经添加logcat信息 – RennerStudios