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();
}
JAVAME學習筆記(3)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
JAVAME學習筆記(2)
郑州boy
2020-02-22 02:35:30
JAVAME學習筆記(4)
郑州boy
2020-02-22 02:35:30
JAVAME學習筆記(1)
郑州boy
2020-02-22 02:35:30
ECLIPSE配置PROGUARD
AresCJ
2020-06-28 23:54:09
J2ME 網絡訪問 亂碼問題
AresCJ
2020-06-28 23:54:09
Java ME環境搭建
weyson
2020-06-28 04:20:38
《Oracle Java EE編程自學與面試指南》20-10:工作日誌
AT阿宝哥
2020-05-23 16:44:01
《Oracle Java EE編程自學與面試指南》20-09:L3P原則打造PPT
AT阿宝哥
2020-05-23 16:44:01
《Java白皮書1996自譯》03:面向對象
AT阿宝哥
2020-03-11 04:47:35
《Java白皮書1996自譯》02:簡單和友好的
AT阿宝哥
2020-03-11 04:47:35
Android = Java?
zaqiao
2020-02-25 12:00:45
FileConnection
iteye_17490
2020-02-25 04:36:41
解壓縮
iteye_17490
2020-02-25 04:36:41
XML解析
iteye_17490
2020-02-25 04:36:41
Thread Pool
iteye_17490
2020-02-25 04:36:41
24小時熱門文章