如何在火灾中添加延迟(新MessageEvent)

时间:2015-11-17 08:09:03

标签: java android eclipse libgdx

我是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不适用于参数

感谢任何可以提供帮助的人。

2 个答案:

答案 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