当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

<b>开辟易于移植的J2ME游戏</b>[Java编程]

赞助商链接



  本文“<b>开辟易于移植的J2ME游戏</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

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,这就需求特别处理啦.各位写代码时一定要想好移植的问题啊!


  以上是“<b>开辟易于移植的J2ME游戏</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .