2010-11-18 103 views
2

我使用flash開發和flash cs5製作as3遊戲。一切都是面向對象的。我想知道,是否應該有一個「網關」類,它具有對其他類的所有實例的屬性引用,並且我只是將此網關類傳遞給新對象,以便它們可以訪問每個類。像這樣:Flash As3遊戲:課題

var block:Block = new Block(gateway); 

//In the block class: 
this.gateway.player.setHealth(100); 
//Or: 
this.gateway.input.lock(); 

這就像單身模式或什麼?我應該這樣做嗎?

回答

2

我以前使用過這個想法。我用它作爲模型。 dataModel - 或者其中一個有效的骨幹存儲你的對象 - 或對你的對象的引用。這非常有用,因爲您可以隨時找到某些內容,而無需在課程中漫步。

我已經將它用作單例 - 因此您不必擔心可能會創建新版本的dataModel並引用空白對象。有點讓你撓了幾個小時。 這將是這個樣子:

package com.strangemother.models.DataModel 
{ 
    private static var _dataModel:DataModel; 
    /** 
    an example of storing you items. 
    */ 
    public var character:Character; 

    public static function getInstance():DataModel 
    { 


    if(!_dataModel) 
     { 
    _dataModel= new DataModel(SingletonLock); 
    return _dataModel; 

    } 

public function DataModel(lock:Class) 
{ 
    if(!lock is SingletonLock) 
    { 
    throw new Error("DataModel is a singleton. Use DataModel.getInstance() to use."); 
    } 
} 
} 

加成@AttackingHobo:

this is a one (1) this is the letter L lowercase (l) 
+0

DataModel類似於DataMode1。只是想我會指出。 – AttackingHobo 2010-11-18 23:54:08

+0

我沒有說它看起來完全像DataMode1,只是看起來像它。 :) – AttackingHobo 2010-11-20 03:19:52

+0

好 - 你有點兒不錯... – Glycerine 2010-11-20 12:46:51

1

可能是一個很好的方法來快速試一下,但是從長遠來看,該網關對象會變得如此龐大和不同物體之間的關係如此之多以至於它會落在自身的重量之下。另外,面向對象的一個​​要點是將部分代碼的訪問封裝到僅需要它的那些對象。