2010-01-11 40 views
1

只有一個主循環和一個主類控制舞臺上的單個對象有什麼優點和缺點,反對讓每個單獨的對象都有自己的循環並給它儘自己的責任。什麼是最佳實踐。有多個循環閃存的優缺點

回答

0

我不知道「循環」在這裏一定是合適的術語。

如果你正在討論的是有一個DocumentClass控制一切,而不是有很多類(即你的大多數主要視覺元素都有自己的類與他們自己的內部邏輯),那麼它在某種程度上是一個問題個人喜好。但是,一般來說,儘可能分離您的擔憂可能是一個好主意。

如果你有一個主文檔,比方說兩個角色 - 玩家和敵人怪物 - 那麼你不想把所有的代碼寫在文檔上。相反,你希望玩家和怪物各自擁有自己的內部代碼。那樣的話,後來很容易添加另一個怪物 - 這是否有道理?

與其爲每個怪物寫出所有複雜的邏輯兩次,你只需創建一個怪物類,然後你知道它總是會以同樣的方式作出反應,即使你把一百萬放在舞臺上。你只需要編寫一次代碼。

這有道理嗎?這是一個模糊的問題,但是 - 如果你想採用「程序員」的方法,總是儘可能少寫代碼。在Flash架構的情況下,這通常意味着讓您的代碼生活在可以最有效地重用的地方。

我希望有所幫助!

+0

我明白你的意思了。但我不會把所有的邏輯放在主類上。我會把所有的對象行爲都放在它自己的類中。但我認爲從一箇中央循環來調用他們的行爲會更容易。這種方式當你停止遊戲或暫停或重置它。一切都立即停止。當它們全部封裝在單個顯示對象內時,我發現很難跟蹤循環。 – numerical25 2010-01-11 20:58:36

+0

我陷入了困境 - 好的,你可以使用的一種方法是編寫一個LoopManager類並將其作爲一個Singleton實現 - 意味着只有一個LoopManager實例,並且所有各種對象都有一個對它的引用。然後,當循環開始時,您可以使用LoopManager進行註冊。如果您需要停止循環,請執行諸如LoopManager.pauseAll()之類的設置。 這只是一種方法 - 取決於你在做什麼,它可能遠離最佳方式。谷歌「AS3單身模式」,如果你不熟悉它。 – Myk 2010-01-12 01:11:04

+0

這很有道理。這絕對是聰明的。我將不得不考慮這一點。從來沒有聽說過有人爲循環做單身。但看起來很聰明。 – numerical25 2010-01-12 01:51:49

0

我傾向於複製XNA框架中用於C#的模型。那是我有一個有一個主要更新循環的類。然後它遍歷所有實體並調用它們的更新循環。

0

使用單個主循環肯定會讓您更輕鬆地添加暫停/取消暫停功能。一般來說,非Flash遊戲引擎只有一個主遊戲循環。單個對象具有從主循環調用的update()draw()函數。

下面是關於Flash概念的一個很好的解釋:Pause Your Game in Flash AS3