2013-05-25 57 views
-2

我正在做一個遊戲,每個關卡都包含在一個精靈中。當我退出一個關卡時,精靈將從舞臺上移除並設置爲空。問題在於精靈內部的所有變量和事件監聽器都保持不變。有沒有比找到和禁用每個遊戲機制更簡單的解決方案?AS3遊戲的水平作爲動畫片段?

回答

1

我有一個非常類似的方法。我不知道它會對你有用,但是這或多或少是我所做的。說實話,你的問題有點含糊,但我會採取一些措施。 (對於任何可能的評論員來說,是的,我在我的時間軸上有代碼,而且我知道很多人認爲這是「糟糕的做法」。相信我,替代方案對我的項目來說是不可行的。然而,從技術上講,一個可能做類似的事情,以我使用文檔類,我想):

-

我也各有「級別」(實際上,對我來說,每個位置探索)在一個單獨的影片剪輯。顯然,每個MovieClip都有自己的代碼。但是,變量和事件偵聽器在「startClip()」函數中初始化。然後,在「stopClip()」函數中完成清理任務(如刪除事件偵聽器和變量)。

這些級別通過創建MovieClip,然後調用MovieClip上的startClip()放置在舞臺上。當我想切換到另一個級別時,我調用stopClip(),然後刪除MovieClip。

此方法的另一個優點是,我可以在舞臺上爲常見的GUI元素添加一個MovieClip,因此當我切換「關卡」時,通用GUI不變。

我相信還有其他的方法可以完成同樣的事情,但這是我做的,而且對我很有用。

還有一個提示:如果您將大部分(如果不是全部)常見任務放置在舞臺上,文檔類中,並且必要時在內部,您將減少需要刪除的變量和事件偵聽器自定義班級或兩個。實際上,我有很多自定義類,因此,每個MovieClip中大約90%的代碼只是調用這些類中的函數和變量。

對於我來說,這些自定義類控制(除其他外)評分,聲音回放,隨機化任務,常用陣列任務和保存玩家進度。

希望這會有所幫助!

+0

DocumentClass和OOP是唯一的清潔方法。 FrameScripts只是一個糟糕的實踐,它是來自as2的剩餘物。話雖如此,我總是說「只要它有效,誰在乎」。但既然你有一個半OOP aproach(使用一些類),我不明白爲什麼不使它適應開始。而且我從來沒有見過一個項目,它不是「可行」的正確方式!只是說;) – M4tchB0X3r

+0

嘿,總是有第一次。問題在於我的項目龐大。單獨的遊戲核心就存在近10,000行代碼,時間軸上還有​​數十萬行,還有數千個獨特的交互元素。另外,事實上我的90%的(非常複雜的)動畫元素都來自我的非程序員平面設計師,所以我不可能通過代碼創建這些東西。因此,我必須在時間軸上編寫腳本。如果我採取將所有內容都放在文檔類中的方法,那麼就不可能從數以百萬計的代碼中找到一行代碼。 – CodeMouse92

+0

順帶一提,注意諸如「唯一」,「永遠」和「永不」等短語。對於任何項目他們都很少真實。如果是的話,我們現在已經實現了模塊化的「樂高」編程。 – CodeMouse92