html兼容的定时器在离焦时不会暂停?

时间:2017-07-02 00:18:05

标签: timer libgdx

我有一个libgdx项目,我希望将其部署到桌面和Web上。

我在项目中使用了com.badlogic.gdx.utils.Timer,但是如果应用程序散焦,则会暂停。所以我转而只是java.util.Timer,无论如何都会保持滴答作响。 但是,这会在gwt下产生编译错误。

所以我正在寻找适用于两者的Timer解决方案的指针,同时也让应用程序在后台进行计数。

思想;

  • 以某种方式扩展/修改com.badlogic.gdx.utils.Timer吗?
  • 或在核心中使用java.util.Timer,但不知何故告诉gwt编译使用不同的类?
  • 的方法?

谢谢,

2 个答案:

答案 0 :(得分:0)

您有两个选择:

  1. 我建议您使用com.badlogic.gdx.utils.Timer,但是如果您的应用会散焦,则会暂停,因为您的任务是由TimerThread安排的,由pause()resume()由LibGDX框架本身管理{1}}生命周期方法。您需要覆盖ApplicationListener的暂停方法并自行启动计时器。

    @Override
    public void pause() {
       Timer.instance().start();
    }
    
  2. java.util.Timer抛出gwt编译错误,GWT可能不支持。

答案 1 :(得分:0)

我找到了使用gwt.xml配置文件的解决方案。 使用"超级源"您可以指定一个子包,其中的内容将用于代替其他地方的java文件。 你必须确保子包完成路径匹配,然后它才能完美。

即,这是在com.lostagain.jamgdx

的gwt.xml中
<!--    This overrides the default timer class in JamGdx-core with a gwt specific implementation -->
<!-- This is because the core method uses javas Timer out of preferance for its behavour, which gwt does not support. -->
<!-- The gwt class uses its own timer method instead. -->   

    <super-source path="gwtonly"/>

我将我的gwt特定定时器替换为;

com.lostagain.jamgdx.gwtonly.com.lostagain.jamgdx.implementations

在gwt项目中。 (因为我的正常计时器在Core中为com.lostagain.jamgdx.implementations