Loading 是用戶唯一必看、作者卻常忽視的環節。重視 Loading,體現 Flash 工作者的專業態度。拒絕盲目套用現成組件,掌握核心邏輯才能因地制宜。
摒棄過時的 `getFrameLoaded`,唯有兩大王者:
function loadCheck() {
var p = getBytesLoaded() / getBytesTotal();
if (p == 1) {
clearInterval(intervalID); // 必須清理!
gotoAndPlay(mainFrame);
}
}
var intervalID = setInterval(loadCheck, 30); // 30ms 輪詢
缺點:易忘 `clearInterval` 導致全程無謂輪詢;函數作用域處理 MC 路徑麻煩(`this` 指向問題);不利於封裝復用。
loader_mc.onEnterFrame = function() {
var target = this._parent; // 取得主時間軸
var p = target.getBytesLoaded() / target.getBytesTotal();
// 更新 loader_mc 視覺表現(進度條寬度、旋轉角度、粒子數等)
if (p == 1) {
this.onEnterFrame = null; // 釋放自身
target.gotoAndPlay(mainFrame);
}
};
優勢:
- `this` 直接指向當前 MC,操作自身極其方便。
- `_parent`/`_root` 輕鬆訪問主時間軸。
- 代碼寫在主時間軸,統一管理,易查找維護。
- 結合 MC 視覺表現(進度條、旋轉齒輪、填充形狀等)創意無限。
利用幀循環跳轉檢查,結構混亂,不推薦。
下一節將深入講解:
• MovieClipLoader 類:加載外部 SWF/JPG/PNG/GIF 的專業類,支援進度、完整事件、錯誤處理。
• V2 組件容器:包含組件時的 Loading 特殊處理(RSL、組件初始化權重)。