站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题J2ME游戏开发技巧(3)-汉土网络

J2ME游戏开发技巧(3)-汉土网络

摘要: J2ME游戏开发技巧(3)-汉土网络
<tr> <td> <tr> <td colspan="3">IT技术资料馆|编程语言|java系列|J2ME资料|J2ME游戏开发技巧(3)</td> </tr> <tr> <td height="38" colspan="3" align="center">

J2ME游戏开发技巧(3)

</td> </tr> <tr> <td colspan="3" align="center"></td> </tr> <tr> <td colspan="3" class="text">   本来使用Java编程是不需要关心内存使用的,因为Java有它引以为豪的垃圾处理机制。但到了J2ME里,情况发生了变化,因为手机的内存只有屈指可数的几百K,再也不能像在J2SE里那样大手大脚了。否则就会发现,即使程序没有任何语法和逻辑错误,也不能在模拟器中运行。下面给出合理使用内存的几个建议:

   1. 尽可能使用本地变量代替类成员,减少对象的创建,最好能重新利用对象;

   2. 不要试图在初始化的时候把所有Form或者Canvas对象都读入内存中,而应该在需要的时候再创建,虽然这样在显示上会有一些延迟,但是总比程序不能运行或者内存溢出要好;

   3. 一旦对象不需要使用就及时将其置为null,以便能够被垃圾处理器回收,适当的时候调用System.gc()语句提示虚拟机调用垃圾处理器;

   4.必须记住Java的内存管理是有向边机制,所以对于不使用的对象,千万不要让正在使用的对象指向它,以免内存得不到回收;

   5.尽量使图片占有的字节数小一点,可以使用Fireworks在保证图片质量同时减小图片的大小;

   即使做到上面几点,也不能保证程序不会发生内存泄漏,因为手机内存毕竟那么少。所以我提出最后一个建议,就是先完成游戏的主体部分,使它能够正常运行并没有内存泄漏,再慢慢扩展游戏,给它加上封面和其它功能。一旦发现内存不足,再去掉部分功能。

使游戏更有魅力   编写游戏当然希望它能吸引人,我觉得下面几个地方值得大家注意:

   1. 注意控制游戏的节奏

   原来我在削除方块的时候,什么都不做就直接删除,然后开始一个新的循环,让等待的方块往下掉。在实际运行的时候感觉效果不是很好,因为削得越快,上面的方块也掉得越快,让游戏者有一种措手不及的感觉。后来我在删除方块的时候,用空循环停顿了几秒钟,这样就给了游戏者一个反应时间,感觉就好些了,而且如果连削的话,反应时间会更长,这样使得游戏者在玩游戏时有一种轻松的感觉。再后来,我将空循环改成对屏幕上的方块遍历三次,让被删的方块闪烁,使得游戏者能够看清楚被删除的方块,欣赏到自己的成果,这样又增加了游戏的吸引力。

   2. 利用图片实现丰富多彩的表达效果

   在J2ME中如果不能控制文字的大小和字体,那么这将使游戏的效果大打折扣。不过,可以通过把各种特殊的文字做成图片的方法来解决这个问题。有些地方我们也可以用图片来取代文字,使得游戏更加生动,比如在等级栏用五角星来表示游戏的难度。使用图片还有一个好处就是增加游戏的通用性,使得游戏在不同手机上的显示基本相同。另外,如果出现字体颜色在模拟器中显示正常,而在手机上显示不正常的情况,也可以用这种方式解决。

   3. 让游戏能够自动调整难度

   我使用如下函数,使得游戏难度不断加大。

<table cellSpacing=0 cellPadding=2> <tr> <td class=code>private void giveLevel()
{
if(level<=10)
{
levelSleep=600-(level - 1) * 50;
if(levelSleep<200)
levelSleep=200;
levelDelTask=200+(level-1)*100;
if(levelDelTask>1000)
levelDelTask=1000;
//画等级--五角星
paintStar();
}else
{
gameWin();
}
}</td></tr></table>

   level表示游戏等级,levelSleep表示方块下落一个的等待时间,levelDelTask表示过一关需要删除的方块数,也可以理解为过一关需要完成的任务。上面的计算公式可以保证游戏会越来越难,增加了游戏的吸引力。
(全文完) </td> </tr> <tr>
↑返回目录
前一篇: J2ME再现华容道(1)-汉土网络
后一篇: J2ME游戏开发技巧(1)-汉土网络