2010-11-18 19 views
2

私はフラッシュ開発とフラッシュcs5を使用してas3でゲームを作っています。すべてがオブジェクト指向です。私は、他のクラスのすべてのインスタンス化に対するプロパティ参照を持つ1つの "ゲートウェイ"クラスを持っていればいいと思っていました。そして、このクラスを新しいオブジェクトに渡すだけで、すべてのクラスにアクセスできます。ように: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

+0

私はそれがDataMode1とまったく同じように見えたとは言わなかった。 :) – AttackingHobo

+0

ああよく - あなたはまあまあです... – Glycerine

1

迅速に何かをしようとする良い方法でもよいが、ゲートウェイオブジェクトはとても巨大となり、長期的に5月さまざまなオブジェクト間の関係が非常に多く、それが自らの体重を下回ることになります。

また、オブジェクト指向のポイントの1つは、コードの一部のアクセスをそれを必要とするオブジェクトにカプセル化することです。