参数数量不正确,应为 2

Incorrect Number of Arguments, expected 2

我正在为我的 class 做这个回避游戏教程,以便我更好地理解动作脚本,游戏已经完成了,但它应该在与敌人初次接触后停止。我收到一条错误消息,说 "Incorrect Number of Arguments, expected 2." 它挑出了第 13 行,即 enemy = newEnemy();。它是不是像缺少括号一样简单?我也会 post 下面的 class。

package  {

    import flash.display.MovieClip;
    import flash.utils.Timer;
    import flash.events.TimerEvent;

    public class AvoiderGame extends MovieClip {

        public var enemy:Enemy;
        public var gameTimer:Timer;
        public var avatar:Avatar;
        public function AvoiderGame() {
            enemy = new Enemy();
            addChild( enemy );
            avatar = new Avatar();
            addChild( avatar );
            avatar.x = mouseX;
            avatar.y = mouseY;

            gameTimer = new Timer( 25 );
            gameTimer.addEventListener( TimerEvent.TIMER, onTick);
            gameTimer.start();
        }
        public function onTick( timerEvent:TimerEvent ):void 
        {
            enemy.moveDownABit();
            avatar.x = mouseX;
            avatar.y = mouseY;

            if ( avatar.hitTestObject( enemy ) ) 
            {
                gameTimer.stop();
            }
        }
    }

}

Class:

package 
{
    import flash.display.MovieClip;
    public class Enemy extends MovieClip 
    {
        public function Enemy(startX:Number, startY:Number)
        {
            x = startX;
            y = startY;
        }

        public function moveDownABit():void 
        {
            y = y + 3;
        }
    }
}

您的 Enemy class 有两个参数:startXstartY,因此在这种情况下,要创建 class 的实例,您有要做:

var enemy:Enemy = new Enemy(value_of_startX, value_of_startY);

否则,编译器将触发该错误:"Incorrect Number of Arguments, expected 2."。

但是如果你想创建一个 class 的实例而不提及 startXstartY,你可以像这样为你的参数设置一些默认值:

// your class

// here our default values are : 0, 0
public function Enemy(startX:Number = 0, startY:Number = 0)
{
    x = startX;
    y = startY;
}

然后你可以根据需要调用它,带参数或不带参数。

希望能帮到你。