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