Java游戲引擎 - Lgame 使用記

openkk 12年前發布 | 80K 次閱讀 Java 游戲開發

LGame (code.google.com/p/loon-simple)是一款國人開發的Java游戲引擎,有Android及PC(J2SE)兩個開發版本,其實WindowsPhone C#版也很快就要出來了。說一下它的優缺點吧。優點是結構清晰,容易理解和上手,具有PC版和手機版,方便開發。特別是android版有兼容j2me的庫,可以快速移植以前的j2me游戲。不足之處是LGame知名度不高,基本上是原作者在開發,還是有不少的bug的,另外效率上可能也不是很高。有簡單的文檔和幾個示例,但對api的說明沒有。

下面是幾個使用過程中的經驗:

1.LGame 內部對圖像資源的管理應該有緩存,因此如果幾個Sprite使用同一個Animation時,如果其中一個sprite設置為顯示了某一幀圖像,所有使用該animation的sprite都會顯示這一幀圖像。可行的辦法是將該animation復制多個給sprite使用。

如:

 Animation ani = Animation.getDefaultAnimation("assets/ani.png", 2, 80, 80, 100);

Sprite s1 = new Sprite((Animation)ani.clone());

Sprite s2 = new Sprite((Animation)ani.clone());

2.使用Screen時,由LGame框架來管理界面的繪制和刷新,一般只要在onLoad()函數中加入所需要的組件就可以了。

如果想自己管理界面的繪制和刷新,可以使用CanvasScreen,重載void paint(LGraphics g)函數進行界面的繪制。創建一個線程,在線程中調用repaint()函數進行刷新。在paint中希望繪制LGame自帶的組件,可以調用組件的 createUI(LGraphic g)方法。

但某些組件如LMessage沒有createUI方法怎么辦呢?(LMessage中有一個createCustomUI方法,但是protected)

可以自己建一個類,繼承LMessage,并重載void createUI(LGraphics g)。

public class MyMessage extends LMessage 
{
public MyMessage(LImage imgMsgBg, int x, int y) 
{
super(imgMsgBg, x, y);
}

public MyMessage(String str, int x, int y, int width, int height) 
{
super(x, y, width, height);
this.setMessage(str);
}

public void createUI(LGraphics g)
{
super.createUI(g);
createCustomUI(g, 0, 0, 0, 0);
}
}

3.切換screen

對于游戲各界面的切換,應該有兩種方法。一種方法是一個activity對應多個view,在LGame可以使用setScreen(Screen screen)來實現;另一個是多個activity,每個activit對應一個view,通過切換activity來切換畫面。LGame的作者是建議使用第一種方法,因為多個activity比較耗系統資源。

但在我的應用中發現,在第一種方法中需要每次都new一個screen出來才可以。

if (screen == null)

{

screen = new Screen();

this.setScreen(screen);

}

else

{

this.setScreen(screen);

}

需要換成這樣才可以:

this.setScreen(new Screen());

如果采用第二種方法,則某些組件的觸摸消息不響應,原因不明。

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!