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

J2ME 遊戲開發:MIDP 2.0 Sprite 精靈類完整實戰教學

     編輯:Java 程式設計入門

Sprite 簡介

javax.microedition.lcdui.game.Sprite 是 MIDP 2.0 專為遊戲角色動畫設計的高階 API,支援靜態/動態、透明/不透明幀序列。單張包含多個動作幀的 PNG(如 64×16 含 4 個 16×16 幀)可直接建構動畫精靈,配合 setFrame(index) 切換動作。

專案結構與素材準備

  • Eclipse 專案:tank.midp.core 套件,資源置於 /res/img/player1.png(需透明背景 PNG,建議用 Photoshop 處理)。
  • 方向幀索引常數:UP=0, DOWN=1, RIGHT=2, LEFT=3。

核心類別:TankGameCanvas

public class TankGameCanvas extends GameCanvas implements Runnable {
    private Sprite spriteTank;
    private int currentX, currentY, width, height;
    private long delay = 20; // 幀間隔 ms
    private boolean isPlay = true;

    public TankGameCanvas() {
        super(true); // 關閉系統繪圖緩衝,自行管理
        width = getWidth(); height = getHeight();
        currentX = width / 2; currentY = height / 2;
        try {
            Image img = Image.createImage("/res/img/player1.png");
            spriteTank = new Sprite(img, 16, 16); // 切割 16x16 幀
        } catch (Exception e) { e.printStackTrace(); }
    }

    public void start() { new Thread(this).start(); }
    public void stop() { isPlay = false; }

    public void run() {
        Graphics g = getGraphics();
        while (isPlay) {
            handleInput();
            render(g);
            try { Thread.sleep(delay); } catch (InterruptedException ignored) {}
        }
    }

    private void handleInput() {
        int ks = getKeyStates();
        if ((ks & LEFT_PRESSED) != 0)  { currentX = Math.max(0, currentX - 1); spriteTank.setFrame(INDEX_OF_LEFT); }
        if ((ks & RIGHT_PRESSED) != 0) { currentX = Math.min(width - 16, currentX + 1); spriteTank.setFrame(INDEX_OF_RIGHT); }
        if ((ks & UP_PRESSED) != 0)    { currentY = Math.max(0, currentY - 1); spriteTank.setFrame(INDEX_OF_UP); }
        if ((ks & DOWN_PRESSED) != 0)  { currentY = Math.min(height - 16, currentY + 1); spriteTank.setFrame(INDEX_OF_DOWN); }
    }

    private void render(Graphics g) {
        g.setColor(0); g.fillRect(0, 0, width, height); // 清背景
        spriteTank.setPosition(currentX, currentY);
        spriteTank.paint(g); // 一行代碼繪製精靈
        flushGraphics(); // 雙緩衝翻轉
    }
}

執行效果

啟動後可用方向鍵控制坦克四向移動,動畫幀自動切換。完整專案可作為 MIDP 2.0 遊戲開發起手模板。

坦克精靈素材圖

Eclipse 專案結構

運行畫面截圖

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