`
mmdev
  • 浏览: 12915895 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

j2me手机游戏编程第一课(开发环境搭建和第一个MIDlet程序 视频)

 
阅读更多

本讲视频地址:http://www.verycd.com/group/@u3138685

搭建开发平台

J2ME针对手机游戏开发是在CLDCMIDP的配置和简表之上的。实际上可以简单理解为CLDC是一种标准,提供了一套基本类库;MIDP是针对手机开发的通用标准,提供了一套功能类库。如果要在PC上完成手机游戏的开发必须要安装KVM和模拟器。可能有些公司在面试一个手机游戏开发人员的时候会问到这个问题,就是虚拟机和模拟器的区别,实际上虚拟机是一个抽象平台如JVMKVM,而模拟器是某种设备在PC上的模拟比如FC模拟器、GBA模拟器、某款手机在PC上的模拟器。

开发游戏之前,首先准备一下自己的开发环境。开发手机游戏对PC的要求不高,内存128MB、硬盘空间500MB以上就足以用来开发了。另外本书所有的开发工具都是免费的,只需要到官方网站下载,本书附带的光盘上也提供了相关文件。

1. 准备开发环境

开发工具:

l J2SDK1.4   下载地址 http://Java.SUN.com/

由于模拟器需要J2SE虚拟机支持,因此需要下载并安装J2SE,并且要首先安装J2SE,再安装J2ME平台。

l WTK2.2 下载地址 http://Java.SUN.com/

该平台包含了CLDCMIDP的类库、开发环境、模拟器、调试打包工具等,而且包含了MIDPCLDC的所有开发API文档。

2. 建立开发环境

J2ME的开发离不开JDKJava基础部分已经已经在前面介绍过很多,JDK的安装在这里就不再赘述了。

SUNJ2ME开发提供的WTK,是最基本的开发工具。它是免费提供的,体积小、执行速度较快,完全遵守J2ME的各种规范,因此是J2ME程序员最基础的工具,也是必备的工具。

使用WTK搭建J2ME的开发环境,必须首先安装标准的Java开发环境JDK,例如jdk1.4,然后可以安装WTK。目前SUN提供的WTK版本有WTK 1.04WTK 2.0WTK 2.1WTK 2.2,开发人员通常可以根据自己的目标选择安装其中之一,其中WTK 1.04用于MIDP 1.0的开发,而WTK 2.0则用于MIDP 2.0的开发,而WTK 2.1WTK 2.2则同时包含了对MIDP 1.0MIDP 2.0的支持。

1)安装WTK

正确安装JDK后,就可以安装J2ME_wireless_toolkit,即WTK了(如图3-2所示)。与JDK类似,WTK也可以从SUN的网站中免费下载。

正如上面提到过的,WTK 1.04对应的是MIDP 1.0的开发,WTK 2.0则是对应了MIDP 2.0的开发,而WTK 2.1则同时包括了MIDP 1.0MIDP 2.0的支持,但是他们的安装和使用都比较类似。

3-2 WTK安装过程

2)安装后的目录结构

正确完成了以上步骤后,可以说这个基本的J2ME开发平台已经搭建完毕了。安装J2ME WTK以后,会产生如表3-2所示的目录结构。

3-2 WTK安装目录

文件目录

描 述

appdb文件夹

一些WTK用到的图片文件

apps文件夹

里面有J2ME的一些例子程序,所有项目文件通常也存放在该文件夹。

bin文件夹

工具程序

docs文件夹

帮助文档

Lib文件夹

MIDPCLDC以及其他手机开发的库文件

WTKlib文件夹

存放J2ME的手机模拟器文件,以及一些资源文件,比如按钮的图标,等等

在这些文件夹中,apps文件夹特别需要留意,因为这个文件夹通常被用于保存开发人员建立的项目的开发文件。

如果开发人员建立一个新的项目,那么通常可以放在apps文件中,作为一个独立的文件夹,它里面又包含一些子文件夹,每个文件夹就是一个J2ME的项目,每个项目包含一系列的文件,如表3-3所示:

3-3 一个项目包含的文件夹

文件目录

描 述

bin

存放项目的打包输出文件 .jad .jar

classes

存放编译器产生的class文件

lib

存放该应用请求的外部类库

res

存放资源文件,例如项目中用到的文本、图片、声音

src

存放项目的源代码

tmpclasses

存放编译器产生的class文件

tmplib

3)手机模拟器

J2ME WTK本身提供了多种模拟器,例如:Default Color PhoneDefault Gray PhoneMinimum PhoneMotolola i85sPalmOS DeviceRIM Java Handle等。这些模拟器虽然外观不一样,操作也不太一样,但是J2ME程序在其上运行的结果是类似的,与真实设备上的运行效果也基本相同,这体现了Java的跨平台特性。

除了WTK本身提供的模拟器之外(如图3-3所示),某些厂商也提供自己的模拟器,这需要额外安装。此外,开发人员还可以自定义一个手机模拟器,这在J2ME WTKUser Guide中有详细的描述。

3-3 WTK选择模拟器

J2ME WTK中,可以设定缺省的模拟器,只需从【开始】菜单选择【J2ME WTK】→【Default Device Selection】,在下拉列表框中选择模拟器的名字,然后单击OK按钮即可。此后J2ME WTK就会把这种模拟器认为是默认的模拟器。

可以在开发环境中每次手动选择模拟器,不过这样做比较麻烦。J2ME WTK初始默认的模拟器是Default Color Phone,这是一种虚拟的彩色屏幕手机设备。

J2ME WTK在开发中的作用就如同JDKJ2SE开发中的作用,提供了基本的开发库及工具。同样,WTK也不提供文本编辑功能,可以采用操作系统本身的写字板编辑源代码,也可以采用一些流行的第三方文字编辑器,如UltraeditEditplus等。

安装完成WTK马上要做的事情就是检测是否安装正确,最简单的办法是启动开发环境从【开始】菜单选择【J2MEWTK】→【Ktoolbar,然后从菜单中选择 文件à 打开项目,选择一个项目名称然后确定,再单击工具菜单栏上的运行命令,如果WTK安装成功,就可以自动启动默认的模拟器来运行这个J2ME项目(如图3-4所示)。


3.1.3 程序的生命周期

首先,介绍一下MIDlet的生命周期,如果掌握了MIDPlet的生命周期,就会对MIDPletAPI结构有一个很清楚的认识了。

Java应用管理器(JAM)是管理Java 应用的机制。JAM的规范主要由目标环境决定,与Java规范无关。其功能包括:鉴定概要、解析AD(应用描述文件)、应用安装、应用更新、应用列表、应用执行和TCK支持。

JAM还管理JAR文件和ADF文件。JARJava应用档案文件,JADJAVA应用描述文件。此外,JAM还有管理Java虚拟机的功能。虽然在程序当中不和JAM打交道,但是应该知道JAM的存在以及它的作用。

Java应用管理器将MIDlet装载进来,会生成一个MIDlet对象实例。该对象的生命周期完全由Java应用管理器控制,在需要改变MIDlet对象状态的时候,由Java应用管理器会调用MIDlet中对应的函数对这个对象进行控制。如果对象的状态转换发生错误,对象会抛出MIDletStateChangeException异常。

3-5就是MIDlet对象的各种状态之间的转换:

destroyApp ()

JAM构造实例

暂停状态(Paused)

运行状态(Actived)

中止状态(Destoryed)

startApp()

pauseApp()

destroyApp ()


3-5 MIDPlet各种状态之间的转换

JAM需要改变MIDlet状态的时候,需要调用对应方法,在方法调用成功以后,MIDlet的状态最终才会发生改变。

除了JAM可以改变MIDlet的状态,MIDlet自身也可以调用一些方法,改变自身的状态,然后再通过notify的系列函数通知JAMMIDlet的状态需要进行改变。

3-6MIDlet改变自身状态的方法:


notifyDestroyed ()

暂停状态(Paused)

运行状态(Actived)

中止状态(Destoryed)

resumeRequest() ()

notifyPaused ()

notifyDestroyed ()


3-6 MIDlet改变自身状态的方法

从上面的两个图中,可以清楚地看到一个MIDlet对象有三种状态,分别是:运行状态、暂停状态和中止状态。

JAM通过调用startApp()函数使MIDlet进入到开始状态,也就是说让游戏进入开始状态;JAM通过调用pauseApp()使MIDlet进入暂停状态;通过调用destroyApp ()使之停止。

需要注意的是,和标准的Java应用不同,MIDlet不允许直接调用System.exit()Runtime.exit()来结束MIDlet,这种方式会引起Java的安全异常。当MIDlet需要自己结束生命周期的时候,首先调用destroyApp(),然后通过notifyDestroyed()通知JAM结束MIDlet的运行。

3.1.4 第一个J2ME程序

进入Ktoolbar后不仅可以编译、运行旧的项目,也可以创建新的J2ME项目,在Ktoolbar中创建的项目会自动加载MIDPCLDC的类库到项目中。首先需要单击【新建项目】,屏幕会弹出向导窗口(如图3-7所示)。在该窗口中输入项目的名称和MIDlet类名(入口类的类名),比如将项目名字设成First MIDlet类名设成myMIDlet(注意这里不需要写扩展名)

3-7 新建项目窗口

然后单击【产生项目】命令,在新的窗口要求设置MIDPCLDC的版本,这里直接使用默认值,单击【确定】命令,系统会自动在WTKAPPS目录下创建名为 First的文件夹,在这个文件夹下面的src目录中,创建文件myMIDlet.Java 的代码如下:

import Javax.microedition.midlet.*;

import Javax.microedition.lcdui.*;

//J2ME的入口类必须要继承Javax.microedition.midlet.MIDlet

public class myMIDlet extends MIDlet{

private Display display;//可以理解为屏幕控制对象

//构造函数

public myMIDlet(){

display = Display.getDisplay(this);

System.out.println("这里初始化");

}

public void startApp(){

System.out.println("这里开始了程序.");

Form f = new Form("J2ME学习网");//创建屏幕对象

f.append("www.IJ2ME.cn"); //向屏幕中增加文字

display.setCurrent(f);//显示这个屏幕

}

public void pauseApp(){

System.out.println("来电话了程序暂停.");

}

public void destroyApp(boolean unconditional){

System.out.println("程序退出.");

}

}

单击Ktoolbar中的【编译】命令系统会自动编译myMIDlet.Java 生成myMIDlet.class在项目的class目录下。如果没有错误,单击【运行】编译该程序后运行,控制台上就会依次输出:

这里初始化

这里开始了程序.

退出该程序时,控制台就会输出:

程序退出.

手机模拟器会出现标题 J2ME学习网”(如图3-8所示):

3-8 第一个J2ME程序

Javax.microedition.midlet.MIDlet是一个抽象类,任何一个J2ME的程序入口都要是这个类的子类,它有三个抽象方法,分别是:startApppauseAppdestroyApp。任何入口类首先需要实现这三个抽象方法。当启动某个游戏时JAM会自动创建这个类的实例并调用这个类中的startApp方法,当在进行这个游戏时手机来电,JAM会自动调用这个类的pauseApp方法,当游戏退出时候JAM会自动调用destroyApp方法。

在程序的开头,定义了一个显示类(Display)。它是一个显示控制对象,代表了游戏显示屏和输入设备的管理器,包含用来获取手机属性的方法,以及请求要在手机上显示对象的方法。其他处理手机属性的方法主要用于Canvas对象,这些方法将在后面的课程中详细描述。对于Display,大家应该记住:

1 一个MIDlet只能有一个Display实例,得到的方法是:

display= Display. GetDi splay (MIDlet对象)

2) Display可以设置手机当前的显示屏的对象,方法是:

display. SetCurrent (屏幕对象)

startApp函数中,首先实例化了一个FormForm是一个屏幕对象,可以认为它是一个大面板,最后display.setCurrent(f)调用把Form设定为当前显示屏幕。

现在必须编译这个Java源文件。在J2ME编程中有一点是与J2SE是不同的,由于J2ME是一个微小版本,而且由于手机的性能和PC相比要差很多,所以去掉了很多J2SE中的API。为了检测代码编写的是否符合J2ME的规范,所以需要有一个预编译的过程。

(J2ME部分所有API手册使用在本书附带光盘)

3-4 运行模拟器测试J2ME程序
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics