罗明的博客
... ...
讨论Eclipse, Java, Linux, Google产品
              

原文见:http://today.java.net/pub/a/today/2005/07/07/j2me3.html

J2ME是一个很流行的用于移动设备游戏开发的平台。J2ME中的MIDP 2.0引入了一个新的API包,它提供了一些定义好的游戏结构,这在以前的1.0版中要通过很多累赘代码来实现。在这部分tutorial中,我们会学习这个API包,然后用它开发一个小游戏(为了学习需要,我们会用到包中所有的类)。这个包是javax.microedition.lcdui.game. 它的建立基于我们前两次学的J2ME概念。

J2ME游戏API:摘要
javax.microedition.lcdui.game包只有5个类:GameCanvas, Layer, Sprite, TiledLayer和LayerManager. 这5个类提供了开发各种游戏应用的平台。

LayerSpriteTiledLayer的父类。这个类封装了游戏中可视化元素的行为。可视化元素可以是小精灵(sprite),代表一个可以在屏幕上来回移动的独立图形(或组成动画的一组图形),
或是一个背景层:通过很少的图片,就可以生成庞大游戏中的背景。我们可以用Layer来布置图形和进行可视化操作。Layer的子类通过重写paint(Graphics g)方法将元素绘制到屏幕上。

LayerManager类可以控制各层的绘制及绘制顺序,因此我们可以更方便地管理游戏中的可视化元素(包括小精灵和背景层)。

GameCanvas类扩展了上两节我们讲过的Canvas类(画布),提供一个在屏幕后端运行(off-screen)的缓冲区,所有绘制操作都先在这个缓冲区上进行,然后再显示到屏幕。它还提供了得到用户按键信息的快捷方法。

最好的学习方法应该是写一个完整的小游戏,通过这个小游戏我们可以了解游戏制作的方方面面。我们在介绍完这个小游戏的构造后(针对目前还没有游戏开发经验的),会在开发游戏的过程中具体介绍包中的每个类。

构建游戏的简短入门

游戏和动画是建立在重复执行某段代码的机制上的。这段代码跟踪实例变量的值,然后更新相应状态。基于当前游戏状态,代码将游戏元素绘制到屏幕上。实例变量值是随着用户交互和游戏内部行为而改变的。

代码的重复执行是通过将这段代码放入循环中实现的。在进入循环前,先检查一下实例变量,看是否要继续游戏,否则退出循环。为了控制实例变量的更新频率(其实是屏幕刷新的频率),循环体中的代码应该每次休眠一段时间(毫秒计)。

游戏的结构如下列代码所示:

// 主类
public class MainClass 
{
  
private GameCanvas canvas = new MyGameCanvas();


  
public MainClass() 
  
{
    
// 开始一个线程
    canvas.start();
  }

  
  
// 其他代码
}



// 实际进行绘制的类
public class MyGameCanvas extends GameCanvas implements Runnable 
{
  
public MyGameCanvas() 
  
{
    
// 初始化
  }

  
  
public void start() 
  
{
    
// 初始化
    
    
// 执行绘制线程
    Thread runner = new Thread(this);
    runner.start();
  }

  
  
private void run() 
  
{
  
    
// 或者使用(keeprunning = true) 
    
// keeprunning是一个控制游戏状态的实例变量

    
while(true
    



      
// 检查游戏是否达到 
      
// 某个边界值或特殊条件
      
      verifyGameState(); 


      
// 从用户那里得到输入,然后更新描述游戏元素状态的变量值 
      
        checkUserInput(); 


      
// 使用Graphics对象将当前游戏状态绘制到屏幕上

      updateGameScreen(getGraphics());


      
// 控制屏幕更新的频率 

      Thread.sleep(milliseconds); 
    }

  }

}

 

我们将在以下几节中使用这个结构来开发一个游戏。



版权所有 罗明
posted on 2005-12-07 20:40 罗明 阅读(1669) 评论(0)  编辑  收藏 所属分类: JavaJ2ME

只有注册用户登录后才能发表评论。


网站导航: