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

本文介绍了如何搭建J2ME手机游戏开发环境,包括所需软件及其安装步骤。讲解了J2ME的关键概念,如CLDC、MIDP,并演示了如何创建首个J2ME程序。

本讲视频地址: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程序
本教程首先介绍了 j2me 开发体系,然后深入各个MIDP2.0 API,最后是搭建平台的知识。 第一章 “J2ME 技术概述”让你在学习J2ME 以前知道什么是J2ME。本章介绍了J2ME 平 台的体系结构MIDlet 生命周期的概念。为以后的内容打下良好的基础。 第二章“CLDC 简介”介绍了MIDP 的基础Java Community Process(JCP)公布的CLDC1.0 规范(即JSR30)。有了这些知识你就可以顺利的从j2se 的基础API 过渡到MIDP 的基础API 上了。 第三章“MIDP 高级UI 的使用”介绍了MIDP 的可移植UI API,我们称之为高级UI。这 样您的应用就可以栩栩如生了。 第四章“MIDP 低级UI 的使用” 介绍了MIDP 的不可移植UI API,我们称之为低级UI。 利用他你可以更加自由的绘画你的UI。你将了解到关于事件处理的很多知识。 第五章“MIDP 的持久化解决方案— RMS” 为我们讲解了数据持久化机制——记录管理 系统(Record Management System RMS)。这一特别的小型数据库使得MIDP 的数据保存变得很特 别。 第六章“GAME API” 介绍了 MIDP 2.0 相对于1.0 来说,最大的变化——新添加的用于支 持游戏的API,它们被放在javax.microedition.lcdui.game 包中。游戏API 包提供了一系列针对无 线设备的游戏开发类。你可以开发你的游戏了。COOL! 第七章“开发无线网络应用程序” 让我们学习如何开发令人激动的联网应用。无线网络在 当今的技术下与有线网络相比它的带宽更小、延迟更大、连接的稳定性更差。这要求我们在开 发无线联网应用程序时,以往有很大不同。 第八章“MIDP 2.0 安全体系结构” 将主要介绍MIDP 的安全体系模型,并结合一个具体的 实例来讲述MIDP2.0 安全模型的主要概念。 第九章“MIDP 2.0 Push 技术”介绍了如何通过异步方式将信息传送给设备并自动启动 J2ME 中文教程 by www.j2medev.com MIDlet 程序的机制。 第十章“MIDlet 的开发流程与部署”介绍了如何真正完成你的程序并打包发往设备运行。 第十一章“搭建开发平台—WTK”主要讲述J2ME 新手最常使用的开发工具Wireless Toolkit (WTK)。从WTK 的安装、到MIDlet 项目的创建、以及最后的打包发布,一步步带领读者进 入MIDlet 的开发世界! 第十二章“搭建开发平台—Eclipse”讲述了如何利用EclipseME 作为Eclipse 一个插件,帮 助开发者开发J2ME 应用程序。 第十三章“搭建开发平台—JBuilder”介绍了如何利用久负盛名的JBuilder 作为开发工具来 开发J2ME 应用程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值