利用人眼視覺暫留特性,高頻切換畫面內容,形成動態假象。J2ME 中核心類別:
Canvas:繪圖畫布,提供 paint(Graphics) 回調Graphics:繪圖上下文(畫筆、顏色、字型、幾何圖形)Runnable + Thread:獨立執行緒驅動幀更新boolean 旗標控制「顯示/隱藏」sleep(200ms) → 翻轉旗標 → repaint()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()
}
}
}
| 方法/屬性 | 作用 |
|---|---|
getWidth()/getHeight() | 取得畫布實際尺寸,適配不同螢幕 |
g.fillRect() | 清屏,避免殘影 |
Graphics.LEFT | Graphics.TOP | 錨點定位:文字左上角對齊座標 (50,50) |
repaint() | 請求系統重繪,非立即執行,由事件執行緒調度 |
Thread.sleep() | 控制幀率,釋放 CPU,避免佔滿事件佇列 |