2011-09-30 58 views
0

我正在制作一款侧置滚动平台游戏。正因为如此,我有一个充当地板的班级。我也有一个代表敌人的班级。将参数传递给构造函数给一个对象(Actionscript 3)

我有问题将参数传递给自定义类的构造函数。类(SkullDemon.as)扩展了MovieClip。我试图传递一个名为“FloorLevel1”的客户类的实例(称为“floorL1”)。 “FloorLevel1”还扩展了MovieClip(我没有为“FloorLevel1”创建一个书面的.as文件;我只是将地板MovieClip导出到该类)。

我想通过一个“FloorLevel1”的实例,以便“SkullDemon”对象可以像在平台上一样落在地板上。

我的主类叫做“TME2_Main”。这是我尝试将“floorL1”实例传递给“SkullDemon”类的类。这是我尝试创建一个骷髅妖实例,并通过“floorL1”给它的构造:

skullD1 = new SkullDemon(floorL1); 

我尽量在“TME2_Main的”构造函数创建SkullDemon。

这里是“SkullDemon”类的构造函数:

 // Constructor (takes in Level 1's floor variable as an argument 
    public function SkullDemon(floorL1:FloorLevel1) { 
    //public function SkullDemon() { 
     // Move the Skull Demon as soon as it is created 
     moveSkullDemon(); 

    } 

我得到两种类型的错误,当我运行瑞士法郎:

ArgumentError: Error #1063: Argument count mismatch on SkullDemon(). Expected 1, got 0. 
at flash.display::Sprite/constructChildren() 
at flash.display::Sprite() 
at flash.display::MovieClip() 
at TME2d_Main() 

TypeError: Error #2007: Parameter child must be non-null. 
at flash.display::DisplayObjectContainer/addChild() 
at flash.display::Stage/addChild() 
at TME2d_Main() 

什么我错在这里做什么?我花了一段时间寻找解决方案(包括在TME2_Main的构造函数之外移动代码),但到目前为止,没有什么能真正帮助我。

+0

你确定错误发生在指定的头骨恶魔的创建?错误是说它期待一个参数,但没有得到一个参数。它看起来像是在TME2 * d * _Main()类中发生的。 – malificent

+0

是的,这正是我困惑的原因! :P如果我从调用SkullDemon构造函数的参数中删除参数,并从SkullDemon类的构造函数中删除参数,则不会出现错误。 –

+0

你在SkullDemon构造函数的其他地方还有其他的调用吗?我想我很困惑,为什么你说错误发生在TME2_Main类中,但堆栈跟踪显示TME2d_Main。 – malificent

回答

0

听起来就像你在舞台上某个地方有一个SkullDemon的实例。如果这样做,Flash将尝试调用SkullDemon的构造函数而不传递任何参数。当它发生在Sprite类的constructChildren()方法中时,通常可以告诉这是问题。

相关问题