2013-12-19 60 views
6

我在LibGDX中製作遊戲,並且我注意到當我的遊戲啓動時,在我的遊戲的白色屏幕繪製之前顯示黑屏一會兒。Libgdx for android在主屏幕前顯示黑色

我在我的應用程序的style.xml中設置了我應用程序主題的背景爲android:windowBackground,預覽窗口顯示該顏色。但是,在我的應用程序主屏幕加載之前,屏幕在顯示主屏幕之前會變黑一會兒。

我試過在我的遊戲的主要活動和遊戲類中設置Gdx.gl.glClearColor(1,1,1,1),但黑色屏幕在繪製主屏幕之前仍顯示一會兒。

我發現解決這個問題的唯一方法是將android:windowDisablePreview設置爲true,但是這會一起禁用預覽窗口。

有沒有辦法解決這個問題,而不禁用預覽?

+0

您是否在應用程序啓動後立即加載所有資產並立即創建對象? – SteveL

+0

@SteveL我在擴展Screen的類的show()方法中加載資源並創建對象。我嘗試將對象創建移動到我的類的構造函數中,但這沒有幫助。黑屏不一致,但這很可能是由可用內存引起的。 – jjtcomkid

回答

2

除了將對象創建移動到構造函數之外,還需要移動Activity類的構造函數中的ApplicationListener對象創建。

黑屏可能是因爲Activity.onCreate()調用開始和ApplicationListener.show()調用結束之間的時間延遲。
嘗試使用計時器或簡單地System.currentTimeMillis()來測量它,因此差異將可見。

這應該改善情況,如果不能消除問題。

+0

我試過這樣做,但直到應用程序初始化之後才能開始加載紋理。在Activity.onCreate()和ApplicationListener.create()方法結束之間需要大約800ms的時間。如果我刪除紋理和屏幕加載,那麼加載時間減半,黑屏消失。有什麼我做錯了嗎? – jjtcomkid

+0

是的。有一個標準的方法。紋理加載不應該在創建方法中。你應該有一個獨立的加載屏幕和進度條(玩家不會抱怨:D)。只有繪製加載屏幕所需的紋理應該在啓動時加載。所以黑屏不會成爲問題。祝你好運。 –