Timer Libgdx。在计时器内调用screen dispose()方法
我试图让我的游戏一个接一个地播放两段不同的音乐。我使用两个单独的剪辑,因为它们中的每一个都与不同的动画相关联。为了让第二个音乐剪辑等待第一个音乐剪辑完成,我使用了Timer.schedule(Task aTask,float delay)。这似乎很有效。但是,在第二个音乐剪辑完成后,我需要更改屏幕并处理当前屏幕,因此我再次使用Timer.schedule(任务aTask,float delay),以便在第二个音乐剪辑完成后进行更改。但是,我在将dispose()放置在Timer.Task中时遇到问题,因为控制台在启动时出错: 线程“LWJGL应用程序”java.lang.IllegalArgumentException中出现异常:缓冲区未与newUnsafeByteBuffer一起分配或已被释放 我的代码如下所示:Timer Libgdx。在计时器内调用screen dispose()方法,timer,libgdx,screen,dispose,Timer,Libgdx,Screen,Dispose,我试图让我的游戏一个接一个地播放两段不同的音乐。我使用两个单独的剪辑,因为它们中的每一个都与不同的动画相关联。为了让第二个音乐剪辑等待第一个音乐剪辑完成,我使用了Timer.schedule(Task aTask,float delay)。这似乎很有效。但是,在第二个音乐剪辑完成后,我需要更改屏幕并处理当前屏幕,因此我再次使用Timer.schedule(任务aTask,float delay),以便在第二个音乐剪辑完成后进行更改。但是,我在将dispose()放置在Timer.Task中时遇到
aMusic.play();
Timer.schedule(new Task(){
@Override
public void run(){
anotherMusic.play();
}
},2.0f);
Timer.schedule(new Task(){
@Override
public void run(){
aGame.setScreen(new newScreen(aGame));
dispose();
}
},10.0f);
是否有其他方法使dispose()方法等待,而不是使用计时器(并在需要播放音频时保持线程活动)?
谢谢
ccm您可以使用OnCompleteListener执行以下操作:
music.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(Music music) {
}
});
这样,您可以等到第一首曲目完成后,播放第二首曲目并将其丢弃…:)
希望对您有所帮助。错误提示:“或已处理”。也许您可以在
屏幕内调用dispose()
。hide()
方法?如果是这种情况,请调用dispose
两次。只需删除TimerTask
中的dispose
,并在hide()
方法中调用dispose()
。也可以使用OnCompleteListener,就像建议的那样。这解决了我的问题。一切都进行得很顺利,在正确的时间进行处理。谢谢