2010-11-18 106 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

可能是一个很好的方法来快速试一下,但是从长远来看,该网关对象会变得如此庞大和不同物体之间的关系如此之多以至于它会落在自身的重量之下。另外,面向对象的一个​​要点是将部分代码的访问封装到仅需要它的那些对象。