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();
}
}