将参数传递给构造函数到对象(Actionscript 3)

时间:2011-09-30 21:08:34

标签: actionscript-3 parameters constructor arguments

我正在制作一个横向滚动的平台游戏。因此,我有一个充当地板的课程。我还有一个代表敌人的班级。

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

我正在尝试传递“FloorLevel1”的实例,以便“SkullDemon”对象可以像平台游戏一样落在地板上。

我的主要课程名为“TME2_Main”。这是我尝试将“floorL1”实例传递给“SkullDemon”类的类。这就是我尝试创建一个Skull Demon实例并将“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();

    }

运行.swf时出现两种错误:

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的构造函数之外移动代码),但到目前为止没有任何帮助我。

1 个答案:

答案 0 :(得分:0)

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