·天新网首页·加入收藏·设为首页
首页|笔记本|手机|数码相机|摄像机|MP3/MP4|主板|内存|显示器|办公|打印机|下载|开发|汽车|学院|业界
硬件|台式机|数码|数字家庭|投影仪|GPS/CPU|显卡|硬盘|服务器|网络|一体机|驱动|源码|游戏|考试|报价
您现在的位置:天新网 > 软件开发 > Java开发 > J2ME > 程序设计
J2ME开发手机游戏:宝石方块
http://dev.21tx.com 2004年03月24日

上一页 1 2 3 4 5 下一页



  矫正屏幕坐标


  GridOne这个游戏是专门为MotoT720开发的,也就是说游戏背景图片大小和MotoT720型手机的大小是相等的。如果它在那些屏幕比MotoT720大的手机上运行,游戏背景图片会显示在屏幕左上角而影响美观,这时就要用到屏幕矫正技术,使得游戏背景图片居中显示。矫正屏幕坐标代码如下:


public class BlocksCanvas extends Canvas implements Runnable
{
 private final int addX;//坐标矫正
 private final int addY;
 private final int SCREEN_X;//屏幕顶点
 private final int SCREEN_Y;
 private final int WAITBLOCK_X;//等待方块顶点
 private final int WAITBLOCK_Y;
 private final int SCORES_X;//分数顶点
 private final int SCORES_Y;
 private final int STAR_X;//五角星的顶点
 private final int STAR_Y;


 public BlocksCanvas()
 {
  //取得当前手机屏幕的高度和宽度
  height = getHeight();
  width = getWidth();


  //坐标矫正量
  addX = (width-120)/2;
  addY = (height-142)/2;


  //初始化屏幕参数
  SCREEN_X = addX + 48;//屏幕顶点
  SCREEN_Y = addY + 10;
  WAITBLOCK_X = addX + 19;//等待方块顶点
  WAITBLOCK_Y = addY + 103;
  SCORES_X = addX + 36;//分数顶点
  SCORES_Y = addY + 34;
  STAR_X=addX+4;//五角星的顶点
  STAR_Y=addY+70;
 }
}


  首先把所有有关屏幕的参数都定义成private final int型变量。这里之所以加上final 修饰符,是因为不希望变量附初值后,它们的值会发生变化;之所以不加static修饰符,是因为要在其函数中初始化变量,而不是在定义时就初始化好了。先用getHeight()和getWidth()函数取得当前手机屏幕的高度和宽度,再计算出需要的偏移量addX和addY,然后加到各屏幕参数上,这样游戏内容就会居中显示了。图2与图3是效果比较图。



  图2 矫正前


  图3 矫正后


  还有一点需要注意,用getHeight()取得的并不是手机屏幕的真实高度,而是手机屏幕的高度减去Command标签高度,因为屏幕需要留出地方显示Command标签。


  合理使用内存


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


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


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


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


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


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


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


上一页 1 2 3 4 5 下一页

Google
 
热点文章
关于我们 | 联系我们 | 广告服务 | 工作机会 | 版权声明 | 欢迎投稿 | 网站地图
Copyright © 2000-2008 , www.21tx.com , All Rights Reserved .
© 晨新科技 版权所有 Created by TXSite.net