我已经厌倦了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]
。基于谷歌搜索,这是有效的,应该按预期工作。
根据控制台的输出,它只是在那条线之后徘徊 - 没有完全崩溃。这是怎么回事?更多细节很高兴根据要求提供。
答案 0 :(得分:0)
我不确定Component
- 不是我的强项 - 但我确实知道FlxGroup
及其子级(包括FlxState
)有一个名为add()
的方法这会给他们增加孩子。
因此,如果你有一个FlxSprite
,那么将它添加到要更新/绘制的事物链中的正确方法(以flixel为单位)就是使用它;您可以将其直接添加到您所在州或该州的子组中。