0

我被 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是用作地图/字典的对象字段。type设置为[class PlayerComponent]. 根据谷歌搜索,这是有效的,应该按预期工作。

根据控制台的输出,它只是在那条线之后放弃——并没有完全崩溃。这是怎么回事?我们很乐意应要求提供更多详细信息。

4

1 回答 1

0

我不确定Component——不是我的强项——但我知道它FlxGroup及其子项(包括FlxState)有一个名为的方法add(),可以将子项添加到它们中。

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

函数文档: http: //flixel.org/docs/org/flixel/FlxGroup.html#add()

于 2015-08-01T00:00:43.000 回答