处理许多物体

时间:2012-03-02 09:28:32

标签: flash actionscript constructor theory

我正在制作策略游戏并遇到了一个问题。基本上,我不知道如何处理动态创建我需要的单位。我应该使用一些大的switch语句还是有更理想的解决方案?

3 个答案:

答案 0 :(得分:2)

我假设,您实际上是在讨论在运行时实例化不同类的类。可能性很多:)

一个选项是:

您管理地图(基本上是一个对象),其中键是“单位”的标识符,值是类对象,如下所示:

var unitMap:Object = {
    "hero": UserGameCharacter,
    "enemy": NPCharacter,
    "chicken": ChickenCharacter
};

请注意,值是类对象,而不是实例。此外,让我们假设,所有字符类都扩展了一个基本的Character类或实现了一个Character接口。现在,当你想要实现一个“单位”时,你会这样做:

var newCharacter:Character = new (unitMap["hero"])();

这样,您就不再需要switch语句了。希望,这有助于作为一个起点。

答案 1 :(得分:1)

如果您希望动态创建需要构建工作的多种类型的实体,请尝试始终使用抽象工厂。它将使您的游戏更加灵活和模块化。特别是对于策略游戏,您可能拥有构建每个单元的复杂逻辑。看看下面的文章:

http://www.as3dp.com/2010/11/saturated-abstract-factory-1-wholesale-creation/

答案 2 :(得分:1)

您可能还想查看PushButton引擎,它将提供一些开箱即用的功能来处理所有不同的游戏对象。它具有依赖注入功能,这是一种很好的做法,可以解除对象的使用和创建。

https://github.com/PushButtonLabs/PushButtonEngine