Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 参数数量不正确。预期2_Actionscript 3_Flash Cs6 - Fatal编程技术网

Actionscript 3 参数数量不正确。预期2

Actionscript 3 参数数量不正确。预期2,actionscript-3,flash-cs6,Actionscript 3,Flash Cs6,我正在做一个游戏,你是一个足球守门员,球(布拉祖卡)不断地落下,你必须收集它,但我不断得到错误的参数数错误。我对编码相当陌生,我知道这个错误意味着发生错误的括号中发生了意外的事情,但我不知道如何修复它。如果有人能帮我解决这个问题,那就太好了 类游戏屏幕2 package { import flash.display.MovieClip; import flash.utils.Timer; import flash.events.*; import flash.ui

我正在做一个游戏,你是一个足球守门员,球(布拉祖卡)不断地落下,你必须收集它,但我不断得到错误的参数数错误。我对编码相当陌生,我知道这个错误意味着发生错误的括号中发生了意外的事情,但我不知道如何修复它。如果有人能帮我解决这个问题,那就太好了

类游戏屏幕2

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;
                }
            }
        }
    }
}

欢迎,用户。好吧,有几件事

首先,正如你所知,我们需要整个错误,正如Cynangel所说。它有助于我们避免挖掘整个代码。(有关入门的更多提示,请转到)

其次,这就是错误消息的含义:您将错误数量的参数(值)传递给函数。该函数正好需要两个参数,而您传递的数据多于或少于应该传递的数据。


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

可能是您的
GameMusic
类的构造函数

gameMusic = new GameMusic;
你应该有这样的括号:

gameMusic = new GameMusic();
与此行相同:

var newBrazuca = new BrazucaPlay;
应该是:

var newBrazuca = new BrazucaPlay();
如果在添加括号
()
后仍收到错误,则应检查自定义类
BrazucaPlay
GoaliePlay
,并确保其构造函数不需要参数。还要检查此函数:
brazuca.moveDownABitB()

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

public function BrazucaPlay(){
    //some code.
}
public function BrazucaPlay(myParameter:String){ }
如果该函数实际上是这样的:

public function BrazucaPlay(){
    //some code.
}
public function BrazucaPlay(myParameter:String){ }
然后,这将抛出您得到的错误,因为它希望您向它传递一个参数(在本例中是一个字符串,如
newbrazucaplay(“诸如此类”)

编辑

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

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();
 }

请发布完整的错误谢谢,我会尝试,但我不明白你说的:确保从那些类(brazuca.moveDownABitB()等)调用的函数(包括构造函数)没有必需的参数。你能解释一下吗?谢谢,我会尽快更新我的代码,并告诉你发生了什么。我尝试了你告诉我的方法,但还是出现了同样的错误,我在代码区添加了播放代码,你能检查一下它有什么问题吗?我完全按照你说的做了,现在当我尝试玩游戏时,效果很好,除了当它开始时球从最左边落下,沿着直线落下,只在(0,0)处产生,我希望球在随机点产生,我怎么能做到?这超出了你的问题范围,但这很容易做到:
newbrazucaplay(Math.random()*stage.stageWidth,Math.random()*stage.stageHeight)我忘了包括错误的位置,很抱歉,它在这行“var newBrazuca=new BrazucaPlay”中;我相信这就是您要求的。我试着在代码周围移动这行代码,但没有任何效果,我甚至检查了其他类,它们都很好,因为我在游戏中有两种模式,一种模式工作得很好,而另一种模式不工作,两种模式都有相同的类函数。那么,LDMediaServices的答案应该会解决这个问题。