Actionscript 3 AS3对象索引导致Flixel错误行为——什么';这个密码怎么了?
我对AS3、Flixel和组件/实体系统(是的,所有这些系统都在同一时间内)感到困惑,并且我的实体(FlxSprite的子类)没有正确添加(即根本没有添加)。我刚刚花了整整两个小时来敲定这条令人不快的界线。如果我把它取下来,剩下的游戏就会愉快地进行下去 这个代码怎么了Actionscript 3 AS3对象索引导致Flixel错误行为——什么';这个密码怎么了?,actionscript-3,flixel,Actionscript 3,Flixel,我对AS3、Flixel和组件/实体系统(是的,所有这些系统都在同一时间内)感到困惑,并且我的实体(FlxSprite的子类)没有正确添加(即根本没有添加)。我刚刚花了整整两个小时来敲定这条令人不快的界线。如果我把它取下来,剩下的游戏就会愉快地进行下去 这个代码怎么了 public function addComponent(c:Component):void {
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);
}
组件
是用作地图/字典的对象字段<代码>类型设置为[class PlayerComponent]
。基于谷歌搜索,这是有效的,应该按预期工作
根据控制台的输出,它只是在那一行之后退出,而不是完全崩溃。发生什么事?根据要求,我很乐意提供更多详细信息。我不确定
组件是否正确-这不是我的专长-但我知道FlxGroup
及其子项(包括FlxState
)有一个名为add()
的方法,可以向它们添加子项
因此,如果您有一个FlxSprite
,将其添加到要更新/绘制的事物链中的正确方法(在flixel中)是使用它;您可以将其直接添加到您所在的州或该州的子级组中
功能文档:确保您正在使用调试Flash player。如果没有它,异常(崩溃)会悄无声息地发生。这是我第一次看到这种方法来获取对象的类名(我指的是构造函数.toString()方法)。我更喜欢使用类(getDefinitionByName(getQualifiedClassName(obj));我要指出的是,这是有用的信息,但可能对您正在经历的事情没有用处,这是一个没有很好地把握组件的副作用。