1. 程式人生 > >Libgdx Developer's Guide(Libgdx開發者手冊)-5(生命週期)

Libgdx Developer's Guide(Libgdx開發者手冊)-5(生命週期)

Libgdx擁有一個設計非常好的生命週期以管理應用程式狀態,比如建立,暫停和恢復,渲染和銷燬應用程式。

ApplicationListener

應用開發者通過實現 ApplicationListener 介面並傳入一個實現了應用的例項來掛接到生命週期事件,該應用實現了一個指定的後臺 (seeThe Application Framework)。 從那裡,應用程式會在每次應用層事件發生時呼叫這個ApplicationListener 。一個 ApplicationListener 的實現如下示例:

public class MyGame implements ApplicationListener {
   public void create () {
   }

   public void render () {        
   }

   public void resize (int width, int height) { 
   }

   public void pause () { 
   }

   public void resume () {
   }

   public void dispose () { 
   }
}

如果不是所有的介面方法都適宜,也可以使用ApplicationAdapter 類。

一旦傳入應用程式,ApplicationListener方法會按照下面所示被呼叫:


Method signature Description
create () 該方法只在應用建立時呼叫一次。
resize(int width, int height) 該方法在每次遊戲螢幕大小重新調整並且遊戲不是暫停狀態的情況下呼叫。它會在create()方法後呼叫一次。引數是被重新調整大小後新的螢幕寬高,單位是畫素。
render () 應用程式每次渲染時都迴圈呼叫。遊戲邏輯的更新通常在該方法內執行。
pause ()

Android中,該方法在Home按鈕被按下或者接收了一個來電時呼叫。

桌面應用中,該方法僅在退出應用時在dispose()方法前執行。

這是一個儲存遊戲狀態的好地方。

resume () 該方法只在Android中,當應用程式從暫停狀態恢復時呼叫。
dispose () 當應用銷燬時呼叫。在此方法前會執行一次 pause().

下面以圖表示例該生命週期:

主迴圈在哪?

Libgdx 是事件驅動性質的,這主要是源於Android與Javascript的工作方式。它並不存在一個明確的主迴圈,然而,ApplicationListener.render() 方法可以認為是該主迴圈的主體。