j2me遊戲引擎程式結構

2021-03-31 08:56:57 字數 1818 閱讀 7134

2004-11-17

唐良遊戲引擎的結構很多,不過基本上都是在乙個遊戲主迴圈內實現。程式裡面的主迴圈包含了程式框架的最主要的結構體。

j2me

的程式一般都包含兩個

class

檔案,乙個是

midlet,

乙個是displayable

。一般我都是把遊戲的主要**放在

displayable

這個類裡面。這個類是基於事件驅動的程式,有三個主要相應函式

void paint(graphics g),void keypressed(int keycode),void keyreleased(int keycode)

1.

使用

runnable和建立執行緒的主迴圈

一般主體的做法就是讓

displayable

這個類實現

runnable

這個介面,然後在其建構函式中建立乙個執行緒,啟動其

run()函式,

而run

函式裡面就包含了遊戲的主迴圈。下面是我在仙劍裡面的片斷**。

public class gamemidlet extends midlet

display.setcurrent(displayable);}}

displayable.running = false;

}instance.notifydestroyed();

instance = null;}}

public class gamedisplayable extends fullcanvas implements runnable

public void run()

else

count++;

}lib.sleep(30);}}

其中關於控制主迴圈速度的**可以不要,但是

lib.sleep(30)

必須保留,因為在

nokia 60

的手機上,如果去除了

sleep(30),

那麼遊戲將無法切換回來。同時,在遊戲中任何乙個內部迴圈中,也必須加入

sleep(30)

這個等待,才能讓遊戲可以切換回來,至於為什麼這樣做,我暫時還不清楚。

30ms

是我測試過沒有問題的數值,可能比

30ms

還小的值也是沒有問題的。

同時,在

moto

的手機上,必須將遊戲的主迴圈放在乙個執行緒中,遊戲才能切換回來,不過可以不加上面說的

sleep(30)

延時。2.

不使用執行緒的主迴圈辦法

這個辦法只能在

nokia

的平台上實現,而我只建議在

nokia 40

的平台上做,這樣不需要執行緒,道理上來說節約了一些記憶體,如果不是記憶體很緊張的機型,那麼最好還是使用上一種辦法。

遊戲的主迴圈放在

midlet

的class

裡面,具體做法如下:

public class gamemidlet extends midlet

running =true;

display.getdisplay(this).setcurrent(displayable);

while(running) else

count ++;}}

notifydestroyed();}}

running =false;

}running = false;

}running =false;}}

J2ME遊戲引擎程式結構

遊戲引擎的結構很多,不過基本上都是在乙個遊戲主迴圈內實現。程式裡面的主迴圈包含了程式框架的最主要的結構體。j2me 的程式一般都包含兩個 class 檔案,乙個是 midlet,乙個是displayable 一般我都是把遊戲的主要 放在 displayable 這個類裡面。這個類是基於事件驅動的程式...

j2me程式優化技巧

1 少用字串連線,多用stringbuffer 2 盡量用固定大小的陣列代替使用vector 3 如果可以不使用新class就能實現功能,就不要增加新的class,因為每個class都有一定的記憶體開銷 4 使用有限的物件導向,因為純粹的oo往往意味著更多的虛方法,更多的層次關係,更多的class ...

J2ME 關於移動的主頁推送對J2ME程式的影響

中國移動於5月17日推出費用提示頁面,其實早在5月15日測試j2me程式的時候就發現已經有頁面推送了。5月15日早上照常測試我的j2me聯網程式發現在模擬器一切正常,但是到了真機上卻得不到正確的資料,後來發現是第一次鏈結得到的資料流正是移動推送的頁面資料。經過試驗,其實得到第乙個頁面不用管它,繼續重...