参数数量不正确。预期2

时间:2014-05-21 16:13:22

标签: actionscript-3 flash-cs6

我正在制作一个游戏,你是一名足球守门员,球(brazuca)继续摔倒你必须收集它,但我不断收到错误的参数数量错误。我对编码很新,我知道错误意味着在错误发生的括号中发生意外事件,但我无法弄清楚如何修复它。如果有人能帮助我解决这个问题,那就太好了。

类Gamescreen2

package
{
    import flash.display.MovieClip;
    import flash.utils.Timer;
    import flash.events.*;
    import flash.ui.Mouse;
    import flash.media.SoundChannel;

    public class Gamescreen2 extends MovieClip
    {
        public var goalie:GoaliePlay;

        var gameMusic:GameMusic;
        var gameChannel:SoundChannel;
        var speed:Number;

        //public var army:Array;
        public var army2:Array;
        //public var gameTimer:Timer;
        public var gameTimer2:Timer;
        public static var tick:Number;
        public static var score:Number;

        public function Gamescreen2()
        {
            goalie = new GoaliePlay();
            addChild (goalie);

            gameMusic = new GameMusic;
            gameChannel = gameMusic.play(0,999);
            score = 0;

            //army = new Array();
            army2 = new Array();

            //gameTimer = new Timer(25);
            gameTimer2 = new Timer(25);
            //gameTimer.addEventListener(TimerEvent.TIMER, onTick);
            gameTimer2.addEventListener(TimerEvent.TIMER, onTick);
            gameTimer2.start();

            tick = 0;
        }

        public function onTick(timerEvent:TimerEvent):void
        {
            tick ++;

            if (Math.random() < 0.05)
            {
                var randomX:Number = Math.random() * 550;
                var goalieB= new GoalieB(0,0);
                army2.push (goalieB);
                addChild (goalieB);
            }

            for each (var goalieB:GoalieB in army2)
            {
                goalieB.moveDownABit();

                if(goalieB.y == 420)
                {
                    score--
                    trace(score);
                    this.scoreTxttwo.text = score.toString();
                }

                if (goalie.collisionArea.hitTestObject(goalieB))
                {
                    goalieB.x == 550;
                    score += 10;
                }
                if (score < 1)
                {
                    score = 0;
                }
            }
        }
    }
}

类BrazucaPlay

package
{
    import flash.display.MovieClip;

    public class BrazucaPlay extends MovieClip

    {
        var speed:Number;

        public function BrazucaPlay(startX:Number, startY:Number)
        {
            x = startX;
            y = startY;
            speed = Math.random();
        }

        public function moveDownABit():void
        {
            //two speed enemies
            if (speed >= .25)
            {
                y = y + 3;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

可能是GameMusic班的构造函数。

gameMusic = new GameMusic;

你应该有这样的括号:

gameMusic = new GameMusic();

与此行相同:

var newBrazuca = new BrazucaPlay;

应该是:

var newBrazuca = new BrazucaPlay();

如果在添加方括号()后仍然收到错误,那么您应该检查自定义类BrazucaPlayGoaliePlay,并确保其构造函数不期望参数。同时检查此功能:brazuca.moveDownABitB()

构造函数是以类命名的函数,是实例化对象时首先运行的函数。所以你做var newBrazuca = new BrazucaPlay(); BrazucaPlay类中有一个构造函数看起来像这样:

public function BrazucaPlay(){
    //some code.
}

如果该功能实际上看起来像这样:

public function BrazucaPlay(myParameter:String){ }

那会抛出你得到的错误,因为它期望你传递一个参数给它(在这种情况下是一个像new BrazucaPlay("blah blah blah")这样的字符串)

修改

现在您已经发布了更多代码,原因很明显。 BrazucaPlay类的构造函数需要两个参数(起始x / y位置)。因此,当您实例化一个新的BrazucaPlay实例时,您需要将这两个参数传递给它:

var newBrazuca = new BrazucaPlay(0,0);//you need to pass two numbers (starting x and y)

如果您不想这样做,可以更改代码以使这些参数成为可选参数。

 //this makes the parameters default to 0 if no value is passed in
 public function BrazucaPlay(startX:Number = 0, startY:Number = 0)
 {
    x = startX;
    y = startY;

    speed = Math.random();
 }

答案 1 :(得分:0)

欢迎,用户。好的,有几件事......

首先,正如您所知,我们需要整个错误,正如CyanAngel所说。它有助于我们防止挖掘整个代码。 (有关入门的更多提示,请转到stackoverflow.com/help

其次,这是您的错误消息的含义:您将错误数量的参数(值)传递给函数。该功能正好需要两个,而且你传递的次数比你想要的要多。

这就是我们需要错误的原因:它有错误的行号,让我们/你直接缩小它。