J2ME新手,做了一個游戲的項目,其中有些體會,覺得有些東西還是可以拿出來和大家分享。說錯了還請包涵。
開發環境:
Windows2000+JBuilder X+semc_J2ME_sdk_2_1_4_beta
從來沒有接觸過這個方面,因為小組一個項目要開始學J2ME,看了兩天的書,發現其實JDK還是很簡單的。總共也就那幾個類。只是如果要考慮到資源和性能的最佳優化的話,算法和數據結構的要求比較高。
先說環境的搭建:
1、Windows2000(這個不用說了)
2、JBuilder X(其他版本的JBuilder其實應該也沒問題,只是我機子只有512,跑9或者2005的話有點郁悶)
3、因為是針對索愛的K700C開發的項目,所以JDK使用索愛的JDK
4、JBuilder中使用手機的JDK,步驟為Tools-Configure JDKs-Add
開發J2ME的話首先了解J2ME的結構層次,看了很多介紹性的文檔順序也大概都是這樣子,網上的這方面的介紹浩如煙海,我在此也不贅述了,只是說說我的理解吧。
J2ME的核心是Configuration(CLDC、CDC),在這之上是Profile(MIDP),而我們的手機開發也大部分是在Profile上,也就是說CLDC+MIDP。
如果你要詳細了解J2ME一路發展的歷史,可以下載JSR規范讀讀,地址是http://jcp.org
第一天的工作:
有點亂,因為也是剛剛接觸這個東東,一點實際經驗都沒有(Java也只是看的零零碎碎的)。拿著本書在實驗室泡了整整一天,大概了解了一下程序的基本結構。(強烈推薦sun出版的《J2ME無線設備程序設計》第二版,看得非常之痛快)。
程序中繼承了MIDlet類的類可以理解為程序的入口。相當於win32中的winmain,運行的話都是從這個開始。
MIDlet的結構為
public class GameMIDlet extends MIDlet {
public GameMIDlet() {} //構造函數,參數必須為空
public void startApp() //程序開始(或者被系統中斷之後再回到程序)
public void pauseApp() //程序暫停(處理一些暫停的清理工作,但是要注意系統遇到來電或者此類的事件時並非是將程序暫停,而是整個掛起,正常後又開始執行startAPP())
public void destroyApp(boolean con) //銷毀工作。}
今天就寫這麼多了,明天說一下displayable和Graphics吧。另外也說一下大概的J2ME手機游戲的結構。
附:簡單的MIDlet
import Javax.microedition.midlet.*;
import Javax.microedition.lcdui.*;
public class HelloMIDlet extends MIDlet implements CommandListener
{
private Display display;
private Command exitCommand;
private TextBox text;
public HelloMIDlet() {
display = Display.getDisplay(this);
exitCommand = new Command("離開", Command.BACK, 1);
text = new TextBox("Hello App", "Welcome!", 256, 0);
text.addCommand(exitCommand);
text.setCommandListener(this);
}
public void startApp() {
display.setCurrent(text);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
}