AS3错误1063 - 具有(看似)正确的参数数量

时间:2014-05-08 19:28:05

标签: actionscript-3 flash-cs5 argument-error

所以我一直在玩弄构建游戏的想法,而在这一点上,我只想尝试一个基于图块的过度世界的基本框架,比如口袋妖怪或其他

我现在遇到的问题是荒谬的;在修复了其他几个错误之后,我仍然在两个不同的地方得到了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);

    }

overWorldMap 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位置),yxpos就在哪里瓷砖位于屏幕上(每个瓷砖为30px×30px)。 ypos只需查找整数determineTile()并相应更改磁贴的属性和图像。 mapArray[arrX][arrY]MapArrays我在public dynamic class班级中创建并导入Map

无论如何,对此问题的任何帮助将不胜感激。如果有人认为其他地方可能存在问题,我可以编辑发布更多代码,但这些是构造函数被调用的唯一位置以及输出中的前501个错误(还有一些,但它们是因为这些构造函数失败,因为它们是空引用错误)。我已经被困在这里大量的时间调整一些事情,到目前为止没有任何工作,我也没有看到有人在使用适量的论点时出现此错误的其他任何地方。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果舞台上放置了TileMap个实例,那么Flash会在运行时通过调用构造函数来实例化这些实例(就像创建{{ 1}}通过调用Tile

由于您的new Tile(...)Tile类具有自定义构造函数(带参数),因此Flash无法创建这些显示对象的实例,因为它不知道将什么作为输入参数传递给构造函数 - 这就是你得到错误的原因。

通常最好不要在支持代码的舞台上放置任何东西 - 只需从代码创建这些实例并在运行时将它们添加到舞台上。这是额外的工作,但它可以使您的设置更清洁。