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

Java AWT 入門實戰:滾動小球動畫實現與線程控制技巧

     編輯:Java 綜合教學

Java AWT 入門實戰:滾動小球動畫實現與線程控制技巧

繼「滿天星」繪圖練習後,本文實現經典「滾雪球」動畫:小球從頂部下落到底部後重置循環。核心涉及 重繪機制 與 多線程動畫循環 兩大知識點。

完整代碼實現

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;

public class SnowBall {
    public static void main(String[] args) {
        Frame frame = new Frame();
        frame.setBackground(Color.BLACK);
        frame.setSize(1024, 768);
        MyPanel myPanel = new MyPanel();
        frame.add(myPanel);
        Thread thread = new Thread(myPanel);
        thread.start();
        frame.show();
    }
}

class MyPanel extends Panel implements Runnable {
    int x = 120;
    int y = 10;

    @Override
    public void paint(Graphics g) {
        g.setColor(Color.WHITE);
        g.fillOval(x, y, 20, 20);
    }

    @Override
    public void run() {
        while (true) {
            y++;
            if (y > 768) { y = 0; }
            repaint(); // 觸發重繪
            
            // 關鍵:線程休眠控制幀率,否則CPU跑太快導致動畫不可見
            try { Thread.sleep(10); } 
            catch (InterruptedException e) { e.printStackTrace(); }
        }
    }
}

關鍵技術點解析

  1. 雙緩衝思想雛形:repaint() 觸發系統調用 paint(),實現幀更新
  2. 線程控制幀率:Thread.sleep(10) 限制約 100 FPS,否則動畫過快人眼無法捕捉
  3. 座標邊界檢測:y > 768 重置實現循環下落效果
  4. Runnable 接口:面板實現 Runnable 作為動畫執行單元

常見坑點提醒

⚠️ 忘記 sleep 會導致 CPU 100% 佔用且動畫不可見 —— 初學者最易忽略的關鍵行

此例為 Java GUI 入門奠定基礎,後續可擴展碰撞檢測、多球體管理、鍵盤/鼠標交互等遊戲開發核心功能。

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