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

J2ME 動畫開發入門:Canvas + 執行緒實現文字閃爍效果

     編輯:Java 程式設計入門

動畫核心原理

利用人眼視覺暫留特性,高頻切換畫面內容,形成動態假象。J2ME 中核心類別:

  • Canvas:繪圖畫布,提供 paint(Graphics) 回調
  • Graphics:繪圖上下文(畫筆、顏色、字型、幾何圖形)
  • Runnable + Thread:獨立執行緒驅動幀更新

邏輯流程

  1. 建立 boolean 旗標控制「顯示/隱藏」
  2. 啟動執行緒,循環:sleep(200ms) → 翻轉旗標 → repaint()
  3. paint() 根據旗標決定是否 drawString()

完整實作代碼

package welcomecanvas;

import javax.microedition.lcdui.*;

public class DongHuaCanvas extends Canvas implements Runnable {
    private boolean visible = true; // 顯示旗標

    public DongHuaCanvas() {
        new Thread(this).start(); // 啟動動畫執行緒
    }

    protected void paint(Graphics g) {
        // 清屏:白底
        g.setColor(0xFFFFFF);
        g.fillRect(0, 0, getWidth(), getHeight());

        // 黑色字體
        g.setColor(0x000000);

        // 根據旗標繪製
        if (visible) {
            g.drawString("閃爍的文字", 50, 50, Graphics.LEFT | Graphics.TOP);
        }
    }

    public void run() {
        while (true) {
            try {
                Thread.sleep(200); // 0.2 秒一幀 = 5 FPS
            } catch (InterruptedException ignored) {}

            visible = !visible;   // 翻轉狀態
            repaint();            // 觸發 paint()
        }
    }
}

關鍵點解析

進階擴展:複雜動畫

核心差異僅在 paint() 內容:

  • 圖片序列幀:預載 Image[] frames,paint() 繪製 frames[currentFrame]
  • 精靈移動:維護 x, y, vx, vy,run() 更新座標,paint() 繪製
  • 背景滾動:雙層背景圖交替繪製,產生無限滾動視差

效能優化清單

  • 預載所有 Image 至記憶體,避免 paint() 中 createImage()
  • 使用 MutableImage 離屏緩衝(雙緩衝)防閃爛
  • 簡化幾何運算,定點數替代浮點
  • 釋放不用資源:image = null; System.gc()

模擬器測試

在 WTK / Java ME SDK 模擬器中運行,觀察文字以 5 FPS 閃爍,無卡頓、無殘影,即為成功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方法/屬性作用
getWidth()/getHeight()取得畫布實際尺寸,適配不同螢幕
g.fillRect()清屏,避免殘影
Graphics.LEFT | Graphics.TOP錨點定位:文字左上角對齊座標 (50,50)
repaint()請求系統重繪,非立即執行,由事件執行緒調度
Thread.sleep()控制幀率,釋放 CPU,避免佔滿事件佇列