J2ME 遊戲引擎核心圍繞「主迴圈」運轉,通常包含 MIDlet 與 Displayable 兩類別。本文對比「有執行緒」與「無執行緒」兩種主迴圈架構,並說明跨平台相容性關鍵點。
GameDisplayable extends Canvas implements RunnableThread(this).start()run() 內以 System.currentTimeMillis() 控制幀率,呼叫 Game_Process() 更新邏輯,最後 repaint() 觸發渲染Thread.sleep(30),否則 Nokia S60 無法切回前台;Moto 機型需執行緒否則無法切回public void run() {
while (running) {
long now = System.currentTimeMillis();
if (now - timeOld >= interval) {
timeOld = now;
Game_Process(); // 邏輯更新
repaint(); // 觸發 paint()
}
try { Thread.sleep(30); } catch (Exception e) {}
}
}
startApp() 中 while(running) { ... } 直接跑迴圈Canvas 三大回調:
paint(Graphics g):渲染keyPressed(int keyCode) / keyReleased(int keyCode):按鍵輸入GameCanvas 另提供 getKeyStates() 輪詢式輸入建議採用架構一,配合 GameCanvas(MIDP 2.0)獲得最佳跨平台穩定性與效能。