Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3对象索引导致Flixel错误行为——什么';这个密码怎么了?_Actionscript 3_Flixel - Fatal编程技术网

Actionscript 3 AS3对象索引导致Flixel错误行为——什么';这个密码怎么了?

Actionscript 3 AS3对象索引导致Flixel错误行为——什么';这个密码怎么了?,actionscript-3,flixel,Actionscript 3,Flixel,我对AS3、Flixel和组件/实体系统(是的,所有这些系统都在同一时间内)感到困惑,并且我的实体(FlxSprite的子类)没有正确添加(即根本没有添加)。我刚刚花了整整两个小时来敲定这条令人不快的界线。如果我把它取下来,剩下的游戏就会愉快地进行下去 这个代码怎么了 public function addComponent(c:Component):void {

我对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);                                                                   
}                                                                                    
组件
是用作地图/字典的对象字段<代码>类型设置为
[class PlayerComponent]
。基于谷歌搜索,这是有效的,应该按预期工作


根据控制台的输出,它只是在那一行之后退出,而不是完全崩溃。发生什么事?根据要求,我很乐意提供更多详细信息。

我不确定
组件是否正确-这不是我的专长-但我知道
FlxGroup
及其子项(包括
FlxState
)有一个名为
add()
的方法,可以向它们添加子项

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


功能文档:

确保您正在使用调试Flash player。如果没有它,异常(崩溃)会悄无声息地发生。这是我第一次看到这种方法来获取对象的类名(我指的是构造函数.toString()方法)。我更喜欢使用类(getDefinitionByName(getQualifiedClassName(obj));我要指出的是,这是有用的信息,但可能对您正在经历的事情没有用处,这是一个没有很好地把握
组件的副作用。