首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

Java 手機遊戲開發:MIDP 圖形設計入門(上)

     編輯:J2ME

引言

本文透過一個簡單的 MIDlet 遊戲範例,介紹 MIDP 形編程基礎,幫助開發者理解核心概念,為開發複雜移動遊戲打下基礎。

一、MIDlet 圖形概述

1. MIDP 圖形架構簡述

MIDP(Mobile Information Device Profile)定義了一套運行於 MIDP 容器中 MIDlet 應用的 API,建立在 CLDC(Connected Limited Device Configuration)之上。MIDP UI API 非基於 AWT,專為螢幕小、鍵盤少的手機、傳呼機等移動設備設計。開發者僅能使用 MIDP 或 CLDC 提供的 API。

MIDP 核心抽象是 螢幕,採用 面向螢幕 設計:Screen 類封裝設備特定圖形與用戶交互,所有 UI 組件位於螢幕上,一次僅顯示一個螢幕,由螢幕處理所有 UI 事件,僅將高級事件傳給應用。此設計應對移動設備螢幕、鍵盤極度碎片化的現實。圖 1 展示基於螢幕的 MIDP UI 範例。


圖 1:基於螢幕的 MIDP 圖形用戶界面

2. 高級與低級 UI API

  • 高級 UI:Form、List、TextBox、TextField、Alert、Ticker 等,可適配設備特性(圖像、文本、輸入域、單選鈕),提高跨設備移植性,使用設備原生外觀。
  • 低級 UI:Canvas 類,允許開發者繪製任意圖形(線、弧、矩形、文字、位圖等),直接控制顯示內容,但需自行確保不同設備(尺寸、鍵盤、色彩)上的可移植性。

大多數遊戲 MIDlet 採用 Canvas 作為主圖形界面。所有 MIDP UI 類均屬 javax.microedition.lcdui 包。

3. MIDlet 螢幕類型

A. 高級螢幕

  • 簡單高級螢幕:List、TextBox,用戶不可添加額外組件。例:九宮格遊戲用 ChoosePieceScreen(繼承 List)讓玩家選棋子。
  • Form 螢幕:類似 List,但允許添加圖像、只讀文本、可編輯文本/數據域、標尺、選項組等條目,條目可動態增刪。

B. 低級螢幕

Canvas(畫布)配合 Graphics、Image 類,提供極大繪圖靈活性,可繪製各類圖形元素。遊戲主界面多基於 Canvas 實現。

4. 螢幕切換機制

MIDlet 通常包含多個螢幕,一次僅顯示一個。良好結構設計對螢幕切換至關重要。代碼片段 1 展示螢幕切換邏輯:

class MyMIDlet extends MIDlet {
    private FirstScreen firstScreen;
    private SecondScreen secondScreen;
    public void startApp() {
        Displayable current = Display.getDisplay(this).getCurrent();
        if (current == null) {
            firstScreen = new FirstScreen(this, ...);
            Display.getDisplay(this).setCurrent(firstScreen);
        } else {
            Display.getDisplay(this).setCurrent(current);
        }
    }
    // FirstScreen 回調切換到下一個螢幕
    public void firstScreenDone() {
        secondScreen = new SecondScreen(this, ...);
        Display.getDisplay(this).setCurrent(secondScreen);
    }
    // SecondScreen 回調終止應用
    public void secondScreenQuit() {
        destroyApp(false);
        notifyDestroyed();
    }
}

代碼片段 2 展示帶 MIDlet 回調的 FirstScreen:

class FirstScreen extends Form implements CommandListener {
    private MyMIDlet midlet;
    public FirstScreen(MyMIDlet midlet) { this.midlet = midlet; ... }
    public void commandAction(Command c) {
        if (c == cmdQuit) { midlet.firstScreenDone(); }
    }
}

5. MIDP UI API 移植性考量

  • 高級 API 可移植性由 MIDP 設備保證。
  • 低級 API(Canvas、Graphics)給予開發者更大控制權,但需自行處理不同設備特性(如用 getWidth()、getHeight() 適配畫布尺寸)。

後續範例將涵蓋:高級 API 應用、低級 API 繪圖、多尺寸設備移植、鍵盤代碼與遊戲動作映射。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved