我正在制作一个游戏,你是一名足球守门员,球(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;
}
}
}
}
答案 0 :(得分:1)
可能是GameMusic
班的构造函数。
gameMusic = new GameMusic;
你应该有这样的括号:
gameMusic = new GameMusic();
与此行相同:
var newBrazuca = new BrazucaPlay;
应该是:
var newBrazuca = new BrazucaPlay();
如果在添加方括号()
后仍然收到错误,那么您应该检查自定义类BrazucaPlay
和GoaliePlay
,并确保其构造函数不期望参数。同时检查此功能: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)
其次,这是您的错误消息的含义:您将错误数量的参数(值)传递给函数。该功能正好需要两个,而且你传递的次数比你想要的要多。
这就是我们需要错误的原因:它有错误的行号,让我们/你直接缩小它。