萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 軟體知識 >  >> 影像處理 >> Flash 教學

Flash 幀速率測試器 DIY——即時監控動畫效能

為什麼需要幀速率測試器?

Flash 預設幀率(如 24/30 fps)僅為理想值。實際執行時,大量符號、複雜渲染、運算邏輯會導致幀率下降,造成畫面卡頓、掉幀。內建測試器能即時顯示平均實際幀率,幫助開發者定位效能瓶頸,優化遊戲或大型動畫專案。

設計原則

  • 測試器本身極簡:一個動態文字顯示幀率、一個重置按鈕。
  • 不干擾被測主程式運作,僅佔用極少資源。
  • 重置功能可清除累計誤差,獲得精準瞬時測量。

製作步驟

1. 建立 FPS 顯示元件

新建影片剪輯 fps,舞台 350×100 px,背景 #0E6A99。
• 文字工具建立靜態文字「幀速率:」
• 再建動態文字框,屬性面板設定:
- 文字類型:動態文字
- 變數名稱:out(關鍵!用於接收計算結果)
- 字體、大小、顏色自訂
圖2 動態文字屬性

2. 建立重置按鈕

新建按鈕元件 button,四狀態簡單設計,標籤「重置」。右鍵→動作,加入:

on(release){
    frame = 0;           // 歸零幀計數
    n = getTimer();      // 重置起始時間(毫秒)
}

3. 主場景組裝與核心邏輯

將 fps 拖入主場景。右鍵該實例→動作,輸入:

onClipEvent(load){
    frame = 1;
    n = 0;
}
onClipEvent(enterFrame){
    time = (getTimer() - n) / 1000;          // 已過秒數
    out = Math.ceil(frame / time);           // 平均 fps = 總幀/秒數
    frame++;                                 // 累計幀數
}

4. 使用方式

  1. 在目標專案新增一圖層(建議命名 fps_monitor)。
  2. 將 fps 元件複製貼上至該圖層,調整位置至畫面角落。
  3. 測試影片:左上角即時顯示當前平均 fps。點擊「重置」可重新計算。

代碼細節解析

關鍵字說明
getTimer()回傳影片播放至今的毫秒數,精度高、不受幀率影響。
Math.ceil()無條件進位,讓 fps 顯示為整數,易讀。
onClipEvent(load)元件載入瞬間執行一次,適合初始化變數。
onClipEvent(enterFrame)每幀進入時執行,構成即時監控迴圈。

效能優化提示

  • 若測試器本身 fps 遠低於設定值,說明舞台過於複雜,需減少向量點數、位圖尺寸、濾鏡使用。
  • 觀察「重置」前後數值變化:穩定上升代表效能良好;劇烈波動提示有間歇性運算高峰(如碰撞檢測、粒子爆發)。
  • 結合 _root.getBytesLoaded()/getBytesTotal() 同時監控載入進度與幀率,全方位掌握效能。
copyright © 萬盛學電腦網 all rights reserved