所以我一直在玩弄构建游戏的想法,而在这一点上,我只想尝试一个基于图块的过度世界的基本框架,比如口袋妖怪或其他
我现在遇到的问题是荒谬的;在修复了其他几个错误之后,我仍然在两个不同的地方得到了ArgumentError#1063,并且在这两种情况下我都传递了正确数量的参数(都是构造函数),错误告诉我传入了0。
这是第一个相关的代码:
public function Main()
{
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler, false, 0, true);
stage.addEventListener(Event.ENTER_FRAME, act, false, 0, true);
key = new KeyObject(stage);
overWorld = new Map(stage);
stage.addChild(overWorld);
}
(overWorld
是Map
var,上面用public var overWorld:Map;
声明
和
public function Map(stageRef:Stage)
{
key2 = new KeyObject(stageRef);
currentMap = MapArrays.testMap;
x = 0;
y = 0;
initializeTiles();
}
我使用所需的Map()
引用来调用stage
构造函数,并将其作为错误吐出:
ArgumentError: Error #1063: Argument count mismatch on Map(). Expected 1, got 0.
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at Main()
此外,initializeTiles()
函数保留了这两个错误中的第二个。这是代码:
public function initializeTiles()
{
for(var i:int = 0; i < 25; i++)
{
for(var j:int = 0; j < 20; j++)
{
var temp:String = ("tile"+i+"_"+j);
this[temp] = new Tile(currentMap, (i+10), (j+10), (i * 30), (j * 30))
}
}
}
和Tile()
构造函数:
public function Tile(mapArr:Array, inX:int, inY:int, xpos:int, ypos:int)
{
mapArray = mapArr;
arrX = inX;
arrY = inY;
x = xpos;
y = ypos;
determineTile();
}
这是吐出的错误(500次,20x25):
ArgumentError: Error #1063: Argument count mismatch on Tile(). Expected 5, got 0.
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at Map()
at Main()
只是为了解释一些,mapArr
/ mapArray
/ currentMap
是描述有效地图集的整数数组,inX
/ arrX
是{{ 1}}地图中给定图块的位置(x
/ inY
当然是arrY
位置),y
和xpos
就在哪里瓷砖位于屏幕上(每个瓷砖为30px×30px)。 ypos
只需查找整数determineTile()
并相应更改磁贴的属性和图像。 mapArray[arrX][arrY]
是MapArrays
我在public dynamic class
班级中创建并导入Map
无论如何,对此问题的任何帮助将不胜感激。如果有人认为其他地方可能存在问题,我可以编辑发布更多代码,但这些是构造函数被调用的唯一位置以及输出中的前501个错误(还有一些,但它们是因为这些构造函数失败,因为它们是空引用错误)。我已经被困在这里大量的时间调整一些事情,到目前为止没有任何工作,我也没有看到有人在使用适量的论点时出现此错误的其他任何地方。
提前致谢。
答案 0 :(得分:0)
如果舞台上放置了Tile
或Map
个实例,那么Flash会在运行时通过调用构造函数来实例化这些实例(就像创建{{ 1}}通过调用Tile
。
由于您的new Tile(...)
和Tile
类具有自定义构造函数(带参数),因此Flash无法创建这些显示对象的实例,因为它不知道将什么作为输入参数传递给构造函数 - 这就是你得到错误的原因。
通常最好不要在支持代码的舞台上放置任何东西 - 只需从代码创建这些实例并在运行时将它们添加到舞台上。这是额外的工作,但它可以使您的设置更清洁。