繁体   English   中英

AS3动态命名对象属性

[英]AS3 Dynamically naming object properties

我正在研究AS3中的一种实体组件系统。 在我的EntityManager类中,我有一个名为createEntity的函数。 它接收一个字符串数组,这些字符串然后成为实体的组成部分。

public function createEntity(newComponents:Array):void
    {
        var newEntity:Entity = new Entity();
        var obj:Object = new Object();
        obj.id = newEntity.id;

        // This is what I would like to do.
        var newComponentName:String;
        for (var i:int = 0; i < newComponents.length; i++)
        {
            newComponentName = newComponents[i];
            obj.newComponentName = createComponent(newComponents[i]);
        }

        trace(obj.Health); // result = undefined

        /* This was my previous setup. This way makes it really hard for my systems to access the components.
        var components:Array = [];
        for (var i:int = 0; i < newComponents.length; i++)
        {
            components.push(createComponent(newComponents[i]));
        }
        obj.components = components;
        */
    }

此外,系统通过ID访问实体。 在EntityManager中,有一个getEntityByID函数。 我希望能够(从HealthSystem类中)调用实体的健康组件,如下所示:(简化了一点)

getEntityByID(testID).Health

使用createEntity函数时,所有组件都具有不同的名称,因此我想动态命名它们。 如果有人对此有任何经验,将不胜感激! 谢谢!

我的天啊。 我喜欢我永远花时间输入问题的方式,然后答案在发布后几秒钟就击中了我。

var newComponentName:String;
        for (var i:int = 0; i < newComponents.length; i++)
        {
            newComponentName = newComponents[i];
            obj[newComponentName] = createComponent(newComponents[i]);
        }

        trace(obj.Health);

这完全有效! 不管怎么说,多谢拉。 如果有人对这个主题或整体上的实体组件系统体系结构有更多的信息,我仍然很高兴。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM