Actionscript 3 参数数量不正确。预期2
我正在做一个游戏,你是一个足球守门员,球(布拉祖卡)不断地落下,你必须收集它,但我不断得到错误的参数数错误。我对编码相当陌生,我知道这个错误意味着发生错误的括号中发生了意外的事情,但我不知道如何修复它。如果有人能帮我解决这个问题,那就太好了 类游戏屏幕2Actionscript 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
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的答案应该会解决这个问题。