用户登陆
如果已经是会员请直接登陆!
用户名:(USERNAME)
密 码:(PASSWORD)
cookie
关闭
载入中…
购 物 车
用户帮助
地区导购
手机快速搜索 点击这里给我发消息 点击这里给我发消息 点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
服务热线:0871-6308619(6线) 售后电话:0871-6308617
品 牌
诺基亚 三星 摩托罗拉 索爱 多普达 飞利浦 LG 苹果 夏普 黑莓 神达 惠普 Palm
外 观
直板手机 滑盖手机 翻盖手机 旋转手机
价 格
1000元以下 1000-1500元之间 1500-2000元 2000-2500元 2500-3500元 3500元以上
特 点
GSM CDMA 3G 双模 双卡
摄像头
200万像素 300万像素 400万像素 500万像素以上
您现在的位置: 昆明手机,云南手机,云南昆明手机网,昆明3G手机网,云南3G手机网,云南昆明水货手机,云南港行手机 >> 手机资讯 >> 今日新闻 >> 深圳 >> 正文
手机游戏Java编程MIDP设计
作者:佚名  文章来源:本站原创  发布时间:2007-12-3 15:34:12
1、MIDlet 图形简述

  移动信息设备描述(Mobile Information Device Profile ,MIDP)定义了一套应用编程接口(API),用于运行在MIDP容器中的MIDlet应用程序。这套API本身是建立在有限连接设备配置(Connected Limited Device Configuration ,CLDC)应用编程接口的基础上的。MIDP用户界面应用编程接口类并不是基于Java抽象窗口工具包(Abstract Window Toolkit ,AWT)设计。它们是专为手机和呼机这样的小型移动信息设备而设计的,这类设备的特点是只有很小的屏幕和键盘。当一个程序员在编写MIDP图形应用程序的时候,他可能只能使用MIDP或CLDC应用编程接口。

  MIDP的中心抽象是屏幕,这句话的含义是MIDP的用户界面设计是基于屏幕的(screen-based)。也就是说,Screen类封装了设备特定的图形和用户交互,所有的用户界面组件都位于屏幕上,并且一次只显示一个屏幕,并且只能浏览或使用这个屏幕上的条目。由屏幕来处理所有的用户界面事件。并只把高级事件传送给应用。之所以采取这种面向屏幕(screen-oriented) 的方式,主要是因为移动设备的显示屏幕和键盘实是种类太多了,几乎每个厂家都多多少少有所不同。图1是基于屏幕的MIDP图形用户界面的一些例子。


图1:基于屏幕的MIDP 图形用户界面

  MIDP 应用编程接口具有高级用户界面类和低级用户界面类。高级用户界面类(例如Form、List、TextBox、TextField、Alert,及Ticker)可被适配到设备上:支持图像、文本、文本输入域、单选按钮等。低级用户界面类(Canvas类)允许开发者根据需要绘制任意图形。MIDlet可以运行在各种不同尺寸的彩色、不同灰度等级或黑白屏幕的手机上。高级用户界面类是通用用户界面元素的抽象,它的用途在于提高MIDlet跨不同设备的移植性,并且可以使用本地设备的外观表现。低级应用编程接口则能够更直接地控制显示内容,但是MIDlet设计者应该确保其在不同设备(显示尺寸、键盘、色彩等)上的可移植性。上面的例子既用到了高级应用编程接口又用到了低级应用编程接口。

  所有的MIDP图形用户界面类都是javax.microedition.lcdui程序包的一部分。

 

  2、MIDlet屏幕

  MIDP有两种主要的屏幕类型:

  A 高级屏幕

   它包括简单的高级屏幕类,例如List和TextBox。用户不能添加额外的图形用户界面组件到这种类型的屏幕中。九宫格MIDlet示例程序使用的屏幕是继承于名为ChoosePieceScreen的List类,用于游戏者在游戏开始时选择棋子。

   一般的Form屏幕类和List类很相像,但是它允许使用额外的图形元素,例如:图像、只读文本域、可编辑文本域、可编辑数据域、标尺和选项组。Form条目可以任意地被添加或删除。九宫格例程中没有使用Form类。

  B 低级屏幕

   Canvas(画布)屏幕(和Graphics、Image类) 可以用来编写基于低级应用编程接口的用户界面。这些类给予MIDlet程序员很大程度的绘画灵活性。程序员可以绘制各种类型的图形元素,例如:线、弧、矩形、圆角矩形、圆、文字(不同颜色、字体、大小)、位图剪辑等等。大部分的游戏MIDlet是使用基于画布屏幕类的主图形用户界面元素编写的。

  一个MIDlet用户界面通常包含一个或多个屏幕。因为每次只能显示一个屏幕,因此MIDlet具有良好设计的结构是非常重要的进行,这样就能更加容易地处理屏幕之间内容的切换。

  下面的代码段说明了在一个MIDlet中切换屏幕的方法,基于屏幕类和对应的MIDlet回调。

  代码段1:

 

 

Class MyMIDlet extends MIDlet
{
private FirstScreen firstScreen;
private SecondScreen secondScreen;
public MyMIDlet()
{

}
public void startApp()
{
Displayable current = Display.getDisplay(this).getCurrent();
if (current == null)
{
firstScreen = new FirstScreen(this, …);
Display.getDisplay(this).setCurrent(firstScreen);
//显示应用程序的第一个用户界面屏幕
}
else
{
Display.getDisplay(this).setCurrent(current);
}
}
// FirstScreen 回调切换到下一个屏幕
public void firstScreenDone()
{

secondScreen = new SecondScreen(this, …);
display.getDisplay(this).setCurrent(secondScreen);
}
// SecondScreen回调终止应用程序
public void secondScreenQuit()
{

destroyApp(false);
notifyDestroyed();
}

}

  这个MIDlet使用了两个屏幕类(FirstScreen和SecondScreen)作为用户界面。当开始执行MIDlet的时候,它设置当前显示屏幕为FirstScreen。当需要从FirstScreen切换到SecondScreen的时候,FirstScreen 调用父MIDlet方法firstScreenDone(参见下面的代码)。firstScreenDone方法创建并设置SecondScreen为当前显示的屏幕。

  代码段2: 包含MIDlet回调的FirstScreen示例

 

 

Class FirstScreen extends Form implements CommandListener {
private MyMIDlet midlet;
public FirstScreen(MyMIDlet midlet)
{
this.midlet = midlet;

}
public void commandAction(Command c)
{
if (c == cmdQuit)
{
parent.firstScreenDone();
}

}

}

  3、MIDP用户界面应用编程接口

  保证基于高级应用编程接口类的用户界面对象的可移植性和适用性是MIDP设备的职责。

  另一方面,像Canvas和Graphics这样的低级类为程序员提供了更大的自由空间让其控制其用户界面的视觉表现,并且监听低级键盘事件。程序员还要负责确保应用程序在不同特性(例如显示尺寸、彩色或黑白,以及不同键盘类型)的移动设备上的可移植性。比如说,有可能需要使用getWidth()和getHeight()方法调节用户界面外观使其适应一个或更多设备的可用Canvas尺寸。

  下面的九宫格MIDlet例程将介绍:

   简单应用高级应用编程接口;

   使用低级应用编程接口来绘制线、弧、字符串和图像等图形;

   不同显示尺寸的移动设备之间的MIDlet移植问题

   键盘代码与游戏动作之间的映射

  本章概述了MIDP图形用户界面的设计,如果想得到更进一步的信息,请参阅
http://java.sun.com/products/midp/ 。

  二. 示例:九宫格(TICTACTOEMIDLET)

  1、设计

  概述

  这个示例应用程序是一个简单的MIDlet,允许游戏者与MIDlet程序之间玩一种称为九宫格的人机游戏。这个例程说明:

   使用高级和低级用户界面组件

   在多显示屏幕之间进行切换

   处理简单的命令

   动态适配显示尺寸
 
   处理键盘事件

  游戏者首先选择使用哪种棋子(用圆和叉表示),然后开始游戏。游戏者和MIDlet谁是先手是随机决定的。每走一步棋之后,程序都要检查游戏状态,判断游戏是否已经结束。游戏的几种可能结果是:游戏者赢,MIDlet程序赢,或者平局。在应用程序运行期间,双方的得分都能显示出来。游戏者可以随时开始新游戏或者退出游戏。

  图2:所示的屏幕快照是游戏中的MIDlet用户界面。


图2:游戏屏幕的先后顺序

  2、九宫格MIDlet

  下面是九宫格MIDlet的类模式图:


图3:九宫格MIDlet类图

  当MIDlet启动方法startApp()时,将创建闪烁屏幕和第一个游戏屏幕(ChoosePieceScreen)。闪烁屏幕显示4秒之后,第一个游戏屏幕开始显示。ChoosePieceScreen让游戏者选择使用哪种棋子(圆还是叉)。当游戏者做出选择之后,他可以使用OK键确认。这会使ChoosePieceScreen回调主MIDlet的choicePieceScreenDone()方法。

  ChoosePieceScreen是使用高级应用编程接口List类实现的。


图4:ChoosePieceScreen是一个高级用户界面List子类

  choosePieceScreenDone()回调创建并显示下一个屏幕,这个屏幕在此应用程序中作为游戏的主屏(GameScreen)。

  每当轮到游戏者下棋的时候,游戏者使用GameScreen的箭头键和Select按钮来选择想要走的空格。每一回合之后,应用程序都会检查游戏的状态,检查其是否符合游戏结束条件并显示游戏结果。游戏者通过点击GameScreen的Quit命令结束游戏,或使用New命令开始新一轮游戏。Quit(结束)命令调用TicTacToeMIDlet的quit()方法,然后MIDlet就会调用destroyApp()方法来终止整个MIDlet程序。

  游戏程序逻辑被封装在一个单独的Game类中。本文只关注MIDlet的图形设计,而对游戏程序逻辑不作深入探讨。如果要与现有的applet Java程序作比较,请参阅http://java.sun.com/applets/jdk/1.0/demo/TicTacToe/TicTacToe.java 和http://java.sun.com/products/jfc/tsc/articles/tictactoe/index.html 中的游戏程序逻辑。
GameScreen通过使用低级Canvas和Graphics类来实现。它使用Canvas、Image和Graphics对象来绘制图形。
GameScreen首先初始化基于画布尺寸的显示面板。这可让MIDlet能够运行在不同显示屏幕的移动设备上。在本例中还使用了一个Image对象用来表示游戏面板。然后GameScreen根据游戏者在ChoosePieceScreen中所做的选择为游戏者和MIDlet分配棋子。游戏然后进行初始化(包括随机决定谁是先手),然后游戏就开始了。
为了使GameScreen能够被移植,MIDlet的键盘代码必须被映射到游戏动作上,如:Up、Down、Left、Right和Fire,用于具有不同键盘的移动设备。每当一个键被按下的时候,keyPressed()方法就会判断这是一个方向键还是一个Fire/Select键。如果按下的键是方向键,光标就会相应地移动,帮助游戏者可视化地选择一个空格放入棋子。Select键用来选择一个空格放入棋子。如果探测到满足游戏结束的条件,就会显示一条信息宣布游戏的获胜者和本轮游戏的得分。(见下图)


图5: GameScreen 是一个低级 Canvas(画布)子类

  3、TicTacToeMIDlet.java

  TicTacToeMIDlet非常简单:它处理MIDlet的生命周期事件。它根据需要创建屏幕对象并且处理来自屏幕的回调。ChoosePieceScreenDone回调被用来创建GameScreen。quit方法则被GameScreen用来结束游戏

文章录入:admin    责任编辑:admin 
 发表评论
数据载入中,请稍后……
常见问题 | 订购方式 | 保修条款 | 付款方式 | 交易条款 | 淘宝店 | 售后服务 | 加盟计划 |关于我们
办公室地址:云南省昆明市东风东路34号(市政府对面,建工大厦后面)建工大院5栋1单元101室 [地图]
导购客服QQ: 964128798 179166609 979507994 917513149
服务热线:3134116(8线) 0871-6308617 0871-6308618 传真:0871-6092283
昆明3G手机网24投诉热线:13888954379
版权所有 2008 - 20011 云南三G手机网 网站备案号:滇ICP备05000694号 RSS阅读 SiteMap