Java手机游戏编程之MIDP图形设计篇01

news/2024/7/8 5:15:41 标签: 图形, 编程, 手机游戏, java, textbox, 游戏

介绍

  本文通过一个简单的MIDlet游戏程序示例,简要介绍了MIDlet图形编程,以期能对开发者深入理解MIDP图形编程和开发复杂的移动游戏有所帮助。

  一. MIDLET图形

  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移植问题

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


http://www.niftyadmin.cn/n/1860754.html

相关文章

python eval函数_俺滴神,Python还有这一套骚操作

上期给大家留的一个关子,Python中,用input语句输入的两个数字相加之后得到的不是他们的和二十两个数字直接按照输入的顺序连接在一起。出错的运行结果这到底是为什么呢?原来,在Python中,input语句获取的输入内容默认是…

UI和美工的区别

UI在国内还是相对较陌生的一个词,甚至有的设计人员这UI的定义也不是太了解。在一些企业招聘中,也常常出现了对“UI设计”的误读,理解还停留在美术设计上,认为UI的工作就是画画边线修修图什么的。美工 这个称呼,本来的职…

java xml 默认名称空间 xpath_XML和JSO的面试题(修订版)

前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3yXMLJSON常见面试题什么是JSON和XML什么是JSON和XMLJSON:JavaScript Object Notation 【JavaScript 对象表示法】.XML:extensiable markup l…

PHP要学些什么啊?

PHP作为通用的脚本语言,吸收了C语言、Java编程、Perl的语言特点,这也决定了PHP应用的广泛性。PHP主要运用在web开发领域,因此学习PHP肯定是要了解web前端的相关知识。最基本当然是HTML、JavaScript、CSS必须要有所了解。 第一阶段&#xff1a…

JAVA制作游戏入门教程

现在流行的游戏似乎都是用C或C来开发的。在java平台上几乎没有很大型及可玩的流行游戏。由于java是个新生语言,他的许多特性还有待大家的发掘,但是我们不能否认Java在游戏编程方面的强大性。本文将带领大家一步一步学习编写Java游戏。最终打造属于自己的Java游戏。 …

web前端培训课程有哪些?

web前端培训课程有哪些?网站浏览现在已经成为人们了解各方信息的主要方式。其实之前IT技术只有美工和程序,随着技术进步,人们的生活需求转变,才逐渐衍生出web前端开发的岗位。近几年伴随这移动端用户逐渐成为主流,web前…

转发到jsp js多了个路径_SpringMVC中的转发和重定向

1.转发return "index.jsp"; //这种方式默认的就是转发return "forward:/index.jsp"; //这是全写的方式路径支持相对路径:相对于当前浏览器的地址 ../根路径:以/开始(/代表当前项目) 推荐使用绝对路径:不支持的…

MySql总结(mysql基础全部知识点呦,值得收藏)

Mysql三大范式: 第一范式:无重复的列。 第二范式:主键唯一。 第三范式:主键关联。 Mysql数据类型 数据类型的概念:数据类型是数据的属性,可以决定数据的存储格式、有效范围和相应的限制。 Mysql的数据类型主要包括&am…