JAVAME學習筆記(3)

GameCanvas類提供了基本的遊戲用戶接口。除了從Canvas繼承下來的特性(命令,輸入事件等)以外,它還提供了專門針對遊戲的功能,比如後備屏幕緩衝和鍵盤狀態查詢的能力。



每個GameCanvas實例都會有一個爲之創建的專用的緩衝區。因爲每個GameCanvas實例都會有一個唯一的緩衝區。可以從GameCanvas實例獲得其對應的Graphics對象,而且,只有對Graphics對象操作,纔會修改緩衝區的內容。外部資源如其他的MIDlet或者系統級的通知都不會導致緩衝區內容被修改。該緩衝區在初始化時被填充爲白色。



緩衝區大小被設置爲GameCanvas的最大尺度。然而,當請求填充時,可被填充的區域大小會受限於當前GameCanvas的尺度,一個存在的Ticker,Command等等都會影響到GameCanvas的大小。GameCanvas的當前大小可以通過調用getWidth和getHeight獲得。



一個遊戲可能提供自己的線程來運行遊戲循環。一個典型的循環將檢查輸入,實現遊戲邏輯,然後渲染更新後的用戶界面。以下代碼演示了一個典型的遊戲循環的結構:



// 從後備屏幕緩衝獲得Graphics對象

Graphics g = getGraphics();

while (true) {

// 檢查用戶輸入並更新位置,如果有需要

int keyState = getKeyStates();

if ((keyState & LEFT_PRESSED) != 0) {

sprite.move(-1, 0);

}

else if ((keyState & RIGHT_PRESSED) != 0) {

sprite.move(1, 0);

}

// 將背景清除成白色

g.setColor(0xFFFFFF);

g.fillRect(0,0,getWidth(), getHeight());

// 繪製Sprite(精靈)

sprite.paint(g);

// 輸出後備緩衝區的內容

flushGraphics();

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章