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

J2ME 遊戲歡迎界面實現:按鍵觸發與定時自動進入

     編輯:J2ME

前言

歡迎界面 (Splash Screen) 是 J2ME 遊戲的門面,通常顯示 Logo、載入進度或品牌資訊。本文介紹兩種經典實現模式:**任意鍵進入**與**定時自動跳轉**,並提供完整 Canvas 實現代碼。

模式一:任意鍵進入主介面

最簡單、用戶掌控感最強的方式。核心邏輯:keyPressed() 直接切換 Displayable。

public class WelcomeCanvas extends Canvas {
    private Image bgImage;
    private Display display;

    public WelcomeCanvas(Display display) {
        this.display = display;
        try {
            bgImage = Image.createImage("/res/welcome.png");
        } catch (Exception e) {
            showError("資源文件不存在!");
        }
    }

    protected void paint(Graphics g) {
        if (bgImage != null)
            g.drawImage(bgImage, 0, 0, Graphics.TOP | Graphics.LEFT);
    }

    protected void keyPressed(int keyCode) {
        // 任意鍵切換至主選單
        display.setCurrent(new MainList());
    }

    private void showError(String msg) {
        Alert a = new Alert("錯誤", msg, null, AlertType.ERROR);
        a.setTimeout(Alert.FOREVER);
        display.setCurrent(a);
    }
}

模式二:定時自動跳轉 (含進度條/動畫)

實現 Runnable,啟動執行緒睡眠指定時間 (建議 3~5 秒),時間到自動切換。適合展示品牌動畫或預載資源。

public class WelcomeCanvas extends Canvas implements Runnable {
    private Image bgImage;
    private Display display;

    public WelcomeCanvas(Display display) {
        this.display = display;
        try { bgImage = Image.createImage("/res/welcome.png"); }
        catch (Exception e) { showError("資源文件不存在!"); }

        new Thread(this).start(); // 啟動定時執行緒
    }

    protected void paint(Graphics g) {
        if (bgImage != null)
            g.drawImage(bgImage, 0, 0, Graphics.TOP | Graphics.LEFT);
        // 此處可額外繪製進度條、旋轉 Logo 等動畫
    }

    public void run() {
        try { Thread.sleep(5000); } // 等待 5 秒
        catch (InterruptedException e) {}
        // 時間到,切換主介面
        display.setCurrent(new MainList());
    }

    private void showError(String msg) { ... }
}

進階增強建議

  • 併行預載:定時執行緒中同步載入遊戲資源 (圖片、音效、地圖),載入完成或超時均跳轉
  • 跳過機制:定時模式下保留 keyPressed() 立即跳轉,兼顧不耐煩玩家
  • 動畫循環:run() 中循環 repaint() + sleep(帧間隔) 播放幀動畫,時間到再跳轉
  • 全螢幕模式:構造函數呼叫 setFullScreenMode(true) 隱藏標題欄/軟鍵提示

資源路徑注意事項

  • 圖片置於 res/ 目錄,JAD/MANIFEST 中 MIDlet-Jar-URL 對應 JAR 內部路徑
  • Image.createImage("/res/welcome.png") 開頭斜槓表示 JAR 根目錄
  • 檔名大小寫敏感 (Linux 伺服器/真機),統一小寫最保險

總結

歡迎界面雖小,體現遊戲專業度。任意鍵模式代碼最少、適合輕量級應用;定時模式配合預載資源、品牌動畫,體驗更佳。實際開發建議採用「定時+可跳過+背景預載」混合模式,兼顧展示效果與用戶自主權。

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