2017-07-02 18 views
0

我有一個libgdx項目,我希望部署到桌面和網絡。兼容html的計時器在離焦時不會暫停?

我在項目中使用了com.badlogic.gdx.utils.Timer,但發現它在應用程序散焦時暫停。所以相反,我切換到只是java.util.Timer,不管滴答不停。 但是,這給gwt下的編譯錯誤。

因此,我正在尋找一個適用於兩者的Timer解決方案的指針,同時也讓應用程序在後臺計數。

想法;

  • 我想擴展/修改com.badlogic.gdx.utils.Timer嗎?
  • 或在內核中使用java.util.Timer,但不知何故告訴gwt編譯使用不同的類?
  • 替代方案?

感謝,

回答

0

你兩個選擇:

  1. 我建議你使用com.badlogic.gdx.utils.Timer但暫停,如果你的應用程序將散焦,因爲你的任務是安排在TimerThread由LibGDX框架管理本身由pause()resume()生命週期方法。您需要重寫ApplicationListener的暫停方法並自行啓動計時器。

    @Override 
    public void pause() { 
        Timer.instance().start(); 
    } 
    
  2. java.util.Timer擲GWT編譯器錯誤,可能會不支持GWT。

+0

感謝您的答覆。您的正確,javas定時器不支持gwt。儘管如此,我仍然不願意使用解決方案1,因爲讓計時器停下來才能重新啓動它似乎很愚蠢。幸運的是我找到了另一個解 – darkflame

0

我找到了一個使用gwt.xml配置文件的解決方案。 使用「超級源代碼」標籤,您可以指定一個子程序包,其中的內容將用於其他地方的java文件。 你必須確保子包完整的路徑匹配,然後它完美。

即,這是我在gwt.xml com.lostagain.jamgdx

<!-- 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項目中。 (因爲我的正常計時器是在com.lostagain.jamgdx.implementations在覈心)