我是Java和Libgdx的新手
我创建了一个名为LevelQuizDialog的界面,其中按钮将触发一个事件,我希望在触发该事件之前有3秒的延迟。
这里是代码:
//fire event on button click
WrongBtn.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
CheckBtn.clearListeners();
if(checker != answer )
{
removeActor(title);
addActor(title2);
}
if(checker == answer)
{
removeActor(title);
addActor(title3);
}
// this is the delay I had a problem with...
float delay = 3; // seconds
Timer.schedule(new Task(){
@Override
public void run() {
fire(new MessageEvent(ON_CLOSE));
}
}, delay);
}
});
}
我在com.badlogic.gdx.utils.Timer中学习了很多教程 但是我犯了很多错误..
我在Timer.schedule中遇到错误(new Task()
说Timer不适用于参数
感谢任何可以提供帮助的人。
答案 0 :(得分:0)
可能这可以帮助
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
fire(new MessageEvent(ON_CLOSE));
}
}, delayMillis);
答案 1 :(得分:0)
便携式LibGDX解决方案可能是使用带有Message api的gdx-ai库,它允许您使用专门的事件总线发布延迟消息:
https://github.com/libgdx/gdx-ai/wiki/Message-Handling#dispatching-a-message
messageDispatcher.dispatchMessage(
delay, // Immediate message if <= 0; delayed otherwise
sender, // It can be null
recipient, // It can be null, see the "Multiple Recipients" section below
messageType, // Any user-defined int code
extraInfo, // Optional data accompanying the message; it can be null
needsReturnReceipt); // Whether the sender needs the return receipt or not