AS3对象索引导致Flixel错误行为 - 这段代码出了什么问题?

时间:2012-12-26 06:53:59

标签: actionscript-3 flixel

我已经厌倦了AS3,Flixel和组件/实体系统(是的,同时所有),我的实体(子类FlxSprite)没有正确添加(即根本没有) 。我刚刚花了两个小时来确定违规行。如果我删除它,游戏的其余部分会愉快地突然出现。

这段代码有什么问题?

public function addComponent(c:Component):void                                       
{                                                                                    
  var type:String = Object(c).constructor.toString();                                
  FlxG.log("type=" + type);                                                          
  this._components[type] = c; // The evil line                                       
  FlxG.log("now type=" + _components[type]);                                         
  c.setData(this);                                                                   
}                                                                                    

components是一个用作地图/字典的Object字段。 type设置为[class PlayerComponent]。基于谷歌搜索,这是有效的,应该按预期工作。

根据控制台的输出,它只是在那条线之后徘徊 - 没有完全崩溃。这是怎么回事?更多细节很高兴根据要求提供。

1 个答案:

答案 0 :(得分:0)

我不确定Component - 不是我的强项 - 但我确实知道FlxGroup及其子级(包括FlxState)有一个名为add()的方法这会给他们增加孩子。

因此,如果你有一个FlxSprite,那么将它添加到要更新/绘制的事物链中的正确方法(以flixel为单位)就是使用它;您可以将其直接添加到您所在州或该州的子组中。

功能文档:http://flixel.org/docs/org/flixel/FlxGroup.html#add()