從幀轉換到手動內容切換

早期的 Flash 開發人員使用框架,因為它們可以在 Flash 播放器中本地使用,以託管其應用程式的各種螢幕(通常是遊戲)。最終,他們可能偶然發現一個問題,因為他們使用了框架,並且忽略了由此產生的困難,並且尋求保持框架結構的方法,同時也消除了使用框架及其複雜性的障礙。解決方案是使用 Sprite 後代類,或者使用單幀匯出幀作為 MovieClips(對於那些在 Adobe Flash CS 中設計的幀),並使用 addChild()removeChild() 手動切換內容。

管理器類應該準備好所有子幀類,並且每當呼叫轉換時,可以使用與此類似的函式:

var frames:Vector.<DisplayObject>; // this holds instances to ALL children
var currentFrame_alt:int; // current frame. Can't use the property
function changeFrame(frame:int):void {
    removeChild(frames[currentFrame_alt]);
    addChild(frames[frame]);
    currentFrame_alt=frame;
}

所有的孩子都可以傳送和收聽事件,Event.ADDED_TO_STAGE 用作 gotoAndStop() 定位該幀之後發生的任何事情的入口點,任何外向轉換都可以編碼為基於字串的事件,這些事件正在 Main 類中被監聽,然後執行過渡。

frames[0].addEventListener("startGame",startGame); // assuming frame 0 is a "Play" button
function startGame(e:Event):void {
    changeFrame(1); // switch to frame 1 - will display frames[1]
}

當然,應該預定義字串集,例如,介紹螢幕可以有兩個按鈕來啟動遊戲,例如開始遊戲開始靜音,按鈕應該分派不同的事件,然後處理在經理班中有所不同。

這種模式可以根據需要儘可能深入。如果專案的任何幀包含具有多個幀的 MovieClip,則也可以使用此方法將其解耦為精靈。