在J2ME游戏中,显示了欢迎界面以后,就应该显示游戏的功能选择界面,实现该界面的方式主要有两种:

1、  使用高级用户界面中的List来进行实现

2、  使用Canvas类来自己绘制一个功能选择界面

为了达到更强的游戏表现效果,经常在开发过程中使用第二种方式来实现游戏功能选择界面。下面是一种实现了使用Canvas绘制功能选择界面的示例。

实现原理:在背景图片上绘制游戏的各个功能菜单,然后使用矩形框来代表用户选中的效果,并根据用户的选择实现选择框的上下移动,具体代码如下:

package welcomecanvas;
import javax.microedition.lcdui.*;
public class MainCanvas extends Canvas {
    Image image = null;
    /** 代表选中项目的索引号码 */
    int index = 1;
    public MainCanvas() {
        try {
            image = Image.createImage("/res/menu.png");
        } catch (Exception e) {
        }
    }
    protected void paint(Graphics g) {
        // 清屏
        g.setColor(255, 255, 255);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(0, 0, 0);
        // 绘制图片
        g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);
        // 绘制矩形
        g.drawRect(39, 24 + (index - 1) * 30, 100, 27);
    }
    protected void keyPressed(int keyCode) {
        // 按下的是数字键2
        if (keyCode == Canvas.KEY_NUM2) {
            // 判断是否移动到第一个选项
            if (index == 1) {
                index = 4;
            } else {
                index--;
            }
        }
        // 按下的是数字键8
        if (keyCode == Canvas.KEY_NUM8) {
            // 判断是否移动到第四个选项
            if (index == 4) {
                index = 1;
            } else {
                index++;
            }
        }
        // 重新绘制屏幕
        repaint();
        // 如果按下数字键5
        if (keyCode == Canvas.KEY_NUM5) {
            // 根据选择的不同显示不同的界面
            switch (index) {
            case 1:
                break;
            case 2:
                break;
            case 3:
                break;
            case 4:
                CanvasMIDlet.quitApp();
            }
        }
    }
}