网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  秉承java思路 开发易于移植的j2me游戏     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:63次  录入:管理员--2007-11-16  
 

1. 屏幕尺寸不同

这儿谈的主要问题,是自适应控件。所谓控件,就是菜单、文本框、列表框、进度条等等。这些控件的大小必须可以根据屏幕大小自适应的调整。按照第一篇说的方法,将屏幕大小作为变量参与到控件尺寸的计算即可得到正确的尺寸(自适应后的)。其次就是得到正确尺寸后怎么把它画出来。

这要看你的gui是怎么画得了,如果是用线画的,那就很简单;如果使用了图片,那么就可能要更换图片了。我的控件使用了图片平铺和画线结合,所以可以很容易的改变尺寸。如果控件变大了,则绘制时增加平铺的次数即可。

顺便说一下,这些控件我只用了一个类表示,使用参数化的方法区分使用,毕竟咱要尽量少用类吧。

2. 支持的api不同

如果你的游戏只限于使用midp1.0,那么移植的时候就不用考虑什么了。实际上由于我们经常要使用图片翻转、象素绘制、全屏等,往往要用到厂商api或midp2.0。显然移植的时候要考虑到这些api的差异。

我的办法是将这些api封装一层,比如我需要使用创建透明子图的api,于是封装了一个函数createsubimg。这是nokia版本:

public static image createsubimg(image img,int []imgrect){
image subimg = directutils.createimage(imgrect[2],imgrect[3],0); 
subimg.getgraphics().drawimage(img,-imgrect[0],-imgrect[1],20); 
return subimg; 
}

这是midp2.0版本:

public static image createsubimg(image img,int []imgrect){ 
return image.createimage(img,imgrect[0],imgrect[1],imgrect[2],imgrect[3],0);
}

对于不同机型,该函数的实现不同,但功能相同,因此使用这个函数的代码在移植时无需修改。当然这样做增加了一些间接性,有可能降低性能。

3. 按键代码不同我们知道midp提供了game action,和按键代码无关,但这不够用啊,我们完全可以定义自己的game action,但首先让我们定义自己的虚拟按键码吧。我使用位记录每个键的状态,每个位代表一个按键,一个int有32个位所以足够了。当keypressed发生时,我记下哪些键被按下;同样当keyreleased时,将那些被松开的键使用的位清0。某个键,也就是这个键盘状态整数里的某个位,就是我定义的一个虚拟键。当然它的值总是2的n次方了,和key code完全不搭边,所以需要我们用一个映射函数将key code映射到这些虚拟键。这个函数就是移植的关键,每个机型都要改写这个映射函数,在里面填入正确的key code。你可以在虚拟键的基础上再定义game action,支持在游戏中设置按键,这样就更灵活了。(4) 封装库如果想不更改一行代码就从motorolav600移植到nokia n-gage,那么为他们封装不同的库吧。我就这样在1分钟内完成了移植。我的库包含了一个游戏框架类(内含游戏循环和渲染函数,键盘处理,以及若干跨机型的工具函数),一个图形组管理类(管理图片的载入切割旋转绘制和动画等,有点像gameapi中的sprite)和一个控件类(包含了所有我需要的控件)。这3个类封装了不同机型的所有差异,我需要为每种机型改写这三个类,当然大部分代码是相同的了。此外我还写了一个工具支持图形组管理类,所见即所得的编辑动画和管理图片,当然这也对移植有帮助。总结:以上几条,总得讲来,无非是拆合而以。主要是要将差异性独立出来,便于更改。但是移植总得来讲还是比较郁闷,主要原因是各种机型有各自的bug,这就需要特殊处理啦。各位写代码时一定要想好移植的问题啊!

 
 
上一篇: 网络编辑基础:对http协议的头信息详解    下一篇: 构造jsp/javabean开发和发布环境的方法
  相关文档
java中更新xml文档的常用方法 11-16
一个封装了java改变lookandfeel的java菜单,可直接在可视化编辑.. 11-17
apache+tomcat负载平衡设置详解 11-17
系统编程 在java中处理日志记录 11-16
java基础:java及相关字符集编码问题研究 12-05
jsp设置页面过期 11-17
java应用:编写高级javascript应用代码 05-29
用actionform一次获取表单所有参数 11-17
[java100例]066、线程控制 11-17
垃圾自动收集系统指导 (1) 11-17
解决jspsmartupload下载的中文问题 11-17
java语言操作oracle数据库中的clob数据类型 11-17
junit的开发(eclipse插件开发系列) 11-17
人物专访: 畅销作家harold《 java i/o 》 11-17
j2ee 的四层模型 11-17
攻克学习多线程时碰到的难题 11-16
7个软件开发原则 11-17
我学swing的故事 11-17
java性能的优化 11-17
破除java神话之一 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息