【发布时间】:2011-11-28 18:56:09
【问题描述】:
我正在开发一款横向卷轴平台游戏。正因为如此,我有一个充当地板的班级。我还有一个代表敌人的类。
我在将参数传递给自定义类的构造函数时遇到问题。类 (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's”构造函数中创建 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 的构造函数之外),但到目前为止没有任何帮助。
【问题讨论】:
-
你确定错误是在创建指定的骷髅恶魔时发生的吗?错误是说它期待一个论点但没有得到一个论点。看起来它正在 TME2*d*_Main() 类上发生。
-
是的,这正是我感到困惑的原因! :P 如果我从对 SkullDemon 构造函数的调用中删除参数并从 SkullDemon 类的构造函数中删除参数,则没有错误。
-
您是否在其他地方调用了 SkullDemon 构造函数?我想我很困惑为什么你说错误发生在 TME2_Main 类中,但堆栈跟踪显示 TME2d_Main。
-
你能打开调试器吗?这将为您提供错误发生的确切位置。根据您粘贴的代码,您的构造函数或创建对象的方式显然没有任何问题。我们要么需要查看更多代码,要么需要查看正确的错误消息。
-
抱歉,我的回复晚了。我正在处理我的程序中的其他问题。在另一个线程中的用户的大量帮助下,我实际上已经能够解决这个问题。这是那个线程:stackoverflow.com/questions/7882235/…
标签: actionscript-3 parameters constructor arguments