JME提供了一個包:com.jme.app,這個包里提供了一些開發(fā)一個JME應(yīng)用程序的基本類,其中AbstractGame類是基本的基本,這個包中的其他類都是直接或間接繼承這個類。
AbstractGame類的作用是提供一個JME游戲開發(fā)的基本變量、常量及方法的抽象類,定義了游戲的開始與結(jié)束。如果要開發(fā)一個JME游戲,那么就要繼承或繼承AbstractGame類的子類,這些類的作用是定義JME游戲的其他屬性及動作,如背景、攝像頭、光線、渲染效果等等。com.jme.app包提供了定義好的一些子類,開發(fā)一般的3D效果是足夠了,如果要涉及到具體的細節(jié)就需要自己開發(fā)相應(yīng)的子類,定義自己需要的細節(jié)。
AbstractGame類分析:
AbstractGame定義了一個實現(xiàn)游戲的最基本方法。客戶端應(yīng)用程序不應(yīng)直接繼承AbstractGame類。
1、 屬性分析:
l finished:標志游戲的運行。
l JME_VERSION_TAG:JME版本號
l DEFAULT_IMAGE:開始圖片的路徑,就是游戲剛開始時出現(xiàn)的圖片,類型是URL。默認的是JME的“大猴子頭圖片”的路徑。
l NEVER_SHOW_PROPS_DIALOG:重來不顯示屬性對話框。這樣你將不能對你的應(yīng)用程序的顯示進行調(diào)整。
l FIRSTRUN_OR_NOCONFIGFILE_SHOW_PROPS_DIALOG:只有在屬性文件沒找到或沒加載時才顯示屬性對話框。
l ALWAYS_SHOW_PROPS_DIALOG:在啟動時一直顯示屬性對話框。
l dialogBehaviour:對話框應(yīng)該怎么顯示,默認的是FIRSTRUN_OR_NOCONFIGFILE_SHOW_PROPS_DIALOG。
l dialogImage:圖片應(yīng)該怎樣顯示,默認是null。
l properties:類型PropertiesIO,通過加載屬性文件定義應(yīng)用程序的屬性。
l display:類型DisplaySystem,游戲著色效果的定義。
2、 方法分析:
l getVersion():返回JME的版本號。
l assertDisplayCreated():確定顯示系統(tǒng)在使用前是否被成功創(chuàng)建,如果沒有成功創(chuàng)建則扔出JmeException異常。
l setDialogBehaviour(int behaviour):設(shè)置屬性對話框應(yīng)該怎樣顯示。
l setDialogBehaviour(int behaviour, String image):設(shè)置屬性對話框與開始圖片的顯示。
l setDialogBehaviour(int behaviour, URL image):設(shè)置屬性對話框與開始圖片的顯示。
l getAttributes():此方法嘗試第一次通過屬性文件“properties.cfg”獲得屬性信息,然后屬性對話框依靠這些信息顯示屬性信息。
l start():開始游戲。游戲第一次通過調(diào)用initSystem()與initGame()進行初始化。假如在初始化的過程中沒有出現(xiàn)錯誤,程序?qū)⑦M入主循環(huán)。跳出主循環(huán)通過調(diào)用finish()與cleanup()。子類應(yīng)該最終聲明此方法。
l finish():跳出主循環(huán)。
l quit():離開程序。
l update(float interpolation):更新游戲狀態(tài)。物理效果、人工智能、聯(lián)網(wǎng)、核算得分以及之類等等應(yīng)該在這個方法里完成的事情。多久及什么時候調(diào)用這個方法要看主循環(huán)的實現(xiàn)。變量interpolation對于0、-1不可用。
l render(float interpolation):向OpenGL上下文顯示游戲信息。在著色期間不對游戲的應(yīng)該怎樣運行進行更改。多久及什么時候調(diào)用這個方法要看主循環(huán)的實現(xiàn)。變量interpolation對于0、-1不可用。
l initSystem():為客戶程序創(chuàng)建所以必須的系統(tǒng)元素。它在start()方法調(diào)用后只調(diào)用且只調(diào)用一次。系統(tǒng)的顯示必須在這個方法里進行初始化。
l initGame():為啟動的需要創(chuàng)建和初始化所有的游戲數(shù)據(jù)。建議如果在這個方法里頻繁調(diào)用資源時通過高速緩存的技術(shù)。這個方法在initSystem()調(diào)用完成后調(diào)用且只調(diào)用一次。
l reinit():重新就建立子系統(tǒng)。這個方法可以被客戶程序在任何時候調(diào)用。
l cleanup():在離開程序前清除所有已創(chuàng)建的對象。這個方法在finish()調(diào)用完成后調(diào)用且只調(diào)用一次。