一次编写随处运行的口号曾驱动了 Java 编程语言的流行但在 Java Micro Edition (Java ME) 的世界中却并不适用屏幕大小颜色深度和内存等设备功能显着不同您必须选择配置文件配置和 JME API而且会碰到我们所谓的设备碎片问题本教程介绍如何使用 IDE 的内置功能来解决 Java ME MIDP 设备碎片问题
需求
开始之前需要在您的计算机中安装以下软件
Java Standard Development Kit (JDK) 版本 或
带有 Mobility 包的 NetBeans IDE
注意可以使用 Mobility Pack 附带的 Sun Java 无线工具包(Wireless Toolkit)部署此项目不必使用其他软件来执行本教程介绍的基本概念但是如果需要部署到其他平台我们建议您下载您要调整的适当仿真程序可以使用以下几个最流行的 CLDC/MIDP 设备平台
Nokia Series SDKs for Symbian OS
Nokia Series SDKs for Symbian OS
Sony Ericsson SDK for the Java ME platform
Motorola Java ME SDK v for Motorola OS Products
如果您不了解 NetBeans Mobility Pack 或 Java ME 开发建议您在继续本教程之前阅读 NetBeans Mobility Pack for CLDC 快速入门指南本指南包括有关添加和注册平台仿真程序的章节
设置应用程序
本例使用一个叫做 Ball Shot 的简单游戏阐述如何调整设备功能来解决设备碎片问题
下载 BallShotGamezip 项目
解压项目并将内容放在 IDE 的 project_home 目录中
有关将 mobility 项目导入 IDE 中的更多说明请参阅 Mobility 项目导入指南
创建自定义配置
解决设备碎片问题的一个策略基于 项目配置 的 NetBeans 使用这允许您创建一组源码并为要调整的每个移动设备进行定制注意保持配置一致以便仿真程序平台和目标设备与要创建的项目配置相对应在下例中Nokia Series 是目标配置
)thisstylewidth=; border= twffan=done>
创建项目配置
选择文件>打开项目(CtrlShiftO)导航至已解压和已安装 SingleCotopiaGameBallShot 项目文件夹所在的文件夹
右键单击 SingleCotopiaGameBallShot 项目节点并选择属性
单击页面顶部的管理配置按钮这将打开管理配置对话框
单击添加然后为配置键入所需的名称然后点确定
为要部署的其他仿真程序重复上一步骤
创建功能
功能是设备属性比如屏幕大小颜色深度API 支持和音频支持在项目中创建功能允许您将其与一个或多个支持特定属性或属性组的项目配置相关联如果将来需要修改移除或添加配置只需将配置与实现更改的功能相关联即可然后配置将自动与任何与功能相关的代码块相关联
右键单击 SingleCotopiaGameBallShot 项目节点并选择属性
从类别菜单树中选择功能页面
从项目配置下拉菜单中选择与要定义的功能相关联的配置
如果需要取消选中标有 使用默认配置值 的框
单击添加按钮
在新建功能对话框中输入功能的名称比如 screen如果 screen 功能已经存在则单击编辑按钮
输入此功能的值在本例中输入 x其他功能可以配置并调整为其他变量比如颜色深度和音频支持单击确定按钮关闭新建功能对话框此功能现在已经与所选项目配置关联到一起了
image onmousewheel=javascript:return big(this) height= alt= src=http://imgeducitycn/img_///jpg width= onload=javascript:if(thiswidth>)thisstylewidth=; border= twffan=done>
可以将此功能与其他配置相关联方法是从项目配置菜单中选择不同的配置并单击添加按钮
使用预处理器块添加特定于配置的代码
预处理器块允许创建管理和跟蹤特定于一个或多个项目配置或功能的代码此代码仅为您标识的配置或功能启用(或禁用)针对移动设备最实用的属性是屏幕大小屏幕大小颜色深度API 支持和其他功能的一个有用的参考站点是 Jbenchmark 站点
在 BallShotImageCreatorjava 编辑器窗口中右键单击实例化 BallShotImageCreator 的源码行 (public BallShotImageCreator() {
右键单击此行并选择预处理程序块>创建 If/Else 块在可用项目框中滚动并选择先前定义的功能 screen
在行 //#if screen 上添加以下代码== x
当活动配置与指令值匹配时则部署由 //#if 预处理器指令标记的代码当活动配置与预处理器的值不匹配时则使用由 //#else 预处理器指令包围的代码换句话说如果活动平台具有 x 功能则仿真程序显示 像素的球//#endif 预处理器指令完成预处理器块下面就是为此游戏的一定范围的流行屏幕大小编写的示例
borderColorDark=#ffffff cellPadding= width= align=center borderColorLight=# border=>ee>
//#if screen == x //# ballWidth = ; //#elif screen == x //# ballWidth = ; //#elif screen == x //# ballWidth = ; //#elif screen == x ballWidth = ;//#endif
在仿真程序上运行击球游戏
选择运行>运行主项目
仿真程序启动之后它应显示以下菜单
image onmousewheel=javascript:return big(this) height= alt= src=http://imgeducitycn/img_///jpg width= onload=javascript:if(thiswidth>)thisstylewidth=; border= twffan=done>
单击仿真程序上的主按钮以启动游戏仿真程序显示以下屏幕为了比较我们包括了不使用预处理器指令的游戏的截屏注意相对于仿真程序屏幕图片太小了
http://imgeducitycn/img_///jpg border= twffan=done>