|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。
1.屏幕尺寸分歧
这儿谈的次要成绩,是自顺应控件。所谓控件,就是菜单、文本框、列表框、进度条等等。这些控件的巨细必需能够依据屏幕巨细自顺应的调剂。依照第一篇说的办法,将屏幕巨细作为变量介入到控件尺寸的盘算便可失掉准确的尺寸(自顺应后的)。其次就是失掉准确尺寸后怎样把它画出来。
这要看你的GUI是怎样画得了,假如是用线画的,那就很复杂;假如利用了图片,那末便可能要改换图片了。我的控件利用了图片平展和画线分离,以是能够很简单的改动尺寸。假如控件变年夜了,则绘制时增添平展的次数便可。
特地说一下,这些控件我只用了一个类暗示,利用参数化的办法辨别利用,究竟咱要只管罕用类吧。
2.撑持的API分歧
假如你的游戏只限于利用Midp1.0,那末移植的时分就不必思索甚么了。实践上因为我们常常要利用图片翻转、象素绘制、全屏等,常常要用到厂商API或Midp2.0。明显移植的时分要思索到这些API的差别。
我的举措是将这些api封装一层,好比我必要利用创立通明子图的API,因而封装了一个函数createSubImg。这是Nokia版本:
publicstaticImagecreateSubImg(Imageimg,int[]imgRect){
ImagesubImg=DirectUtils.createImage(imgRect[2],imgRect[3],0);
subImg.getGraphics().drawImage(img,-imgRect[0],-imgRect[1],20);
returnsubImg;
}
这是Midp2.0版本:
publicstaticImagecreateSubImg(Imageimg,int[]imgRect){
returnImage.createImage(img,imgRect[0],imgRect[1],imgRect[2],imgRect[3],0);
}
关于分歧机型,该函数的完成分歧,但功效不异,因而利用这个函数的代码在移植时无需修正。固然如许做增添了一些直接性,有大概下降功能。
3.按键代码分歧我们晓得MIDP供应了GameAction,和按键代码有关,但这不敷用啊,我们完整能够界说本人的GameAction,但起首让我们界说本人的假造按键码吧。我利用位纪录每一个键的形态,每一个位代表一个按键,一个int有32个位以是充足了。当keyPressed产生时,我记下哪些键被按下;一样当keyReleased时,将那些被松开的键利用的位清0。某个键,也就是这个键盘形态整数里的某个位,就是我界说的一个假造键。固然它的值老是2的n次方了,和keycode完整不搭边,以是必要我们用一个映照函数将keycode映照到这些假造键。这个函数就是移植的关头,每一个机型都要改写这个映照函数,在内里填进准确的keycode。你能够在假造键的基本上再界说GameAction,撑持在游戏中设置按键,如许就更天真了。(4)封装库假如想不变动一行代码就从MotorolaV600移植到NokiaN-Gage,那末为他们封装分歧的库吧。我就如许在1分钟内完成了移植。我的库包括了一个游戏框架类(内含游戏轮回和衬着函数,键盘处置,和多少跨机型的工具函数),一个图形组办理类(办理图片的载进切割扭转绘制和动画等,有点像GameAPI中的Sprite)和一个控件类(包括了一切我必要的控件)。这3个类封装了分歧机型的一切差别,我必要为每种机型改写这三个类,固然年夜部分代码是不异的了。别的我还写了一个工具撑持图形组办理类,所见即所得的编纂动画和办理图片,固然这也对移植有匡助。总结:以上几条,总得讲来,不过是拆合而以。次要是要将差别性自力出来,便于变动。可是移植总得来说仍是对照忧郁,次要缘故原由是各类机型有各自的bug,这就必要特别处置啦。列位写代码时必定要想好移植的成绩啊!
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。 |
|