2009-11-26 132 views
0

我想製作一個小型的Flash遊戲,它有一個基本上是玩家可以選擇某些項目的菜單,有點像塔防遊戲。AS3面向對象的GUI設計

將GUI設置爲單例會是一個好主意嗎?因爲顯然,只能有1個GUI類的實例。

有沒有更好的方法?

回答

3

在我看來,系統的其他部分不應該知道你的GUI,所以使它成爲一個單例是毫無意義的。視圖(GUI)應該綁定到某種模型以顯示當前狀態。

一般來說,完全避免單身人士是個好主意。

通過結合模型我的意思是類似的東西:

class MyGUI 
{ 
    ... 
    public function set game(g:Game):void { 
     g.addEventListener('pointsChanged', function(e:Event):void { 
      ptsLabel.text = g.points.toString() + " points"; 
     }) 
    } 
} 

class Game extends EventDispatcher 
{ 
    private var _points:int = 0; 

    public function get points():int { 
     return _points; 
    } 

    public function set points(points:int):void { 
     _points = points; 
     dispatchEvent(new Event('pointsChanged')); 
    } 
} 
+0

感謝您的回答:-) 但我不能確定你的意思是什麼「的GUI應綁定到某種模式」。 – helloworlder 2009-11-26 15:42:22

+1

所以你的模型經常成爲AS3項目中的一個單例 - 它存儲關於遊戲狀態的各種細節。 GUI從這個模型中提取信息,但本身就是另一種視圖 - 您應該從GUI調度GUIEvents並讓控制器在其他視圖中實現它們。那有意義嗎? – Myk 2009-11-26 16:55:49

+0

這是一個很好的答案。 – Jotham 2009-11-27 00:56:15