我的previous问题的后续行动。
我的舞台上有一个按钮,它有一个名为Game1的类(我没有定义这个类,只是像Juan回答我的另一个问题那样链接它)。该按钮有'GameButton'作为基类,目前包含一些简单的x,y语句。
我的所有按钮都有一个虚拟类'GameX'和一个基类GameButton;这种方式它们从基类继承,但它们仍然可以有不同的图形。
我有一个主类,其中包含添加此按钮的代码:
public class MainAteam extends MovieClip
{
public var btn1:Game1;
public function MainAteam()
{
btn1 = new Game1();
addChild(btn1);
btn1.addEventListener(MouseEvent.CLICK, startGame1);
}
// startGame 1 function here
}
现在,我希望能够通过参数给出x,y值,这样我就可以将每个按钮放在不同的位置。但是,当我尝试新游戏(5,5)时,我将以下内容放在GameObject构造函数中:
package
{
import flash.display.SimpleButton;
public class GameButton extends SimpleButton
{
public function GameButton(startX:Number, startY:Number)
{
x = startX;
y = startY;
}
}
}
我收到以下错误:
1203: No default constructor found in base class GameButton
我真的不知道如何解决这个问题,因为我让Flash为我定义GameX类(我想它们只是空的)并使用基类来设置一些属性。如果我只是放x=5; y=5
,它就可以了。非常感谢。
答案 0 :(得分:3)
这是两件事之一,要么你需要调用super();在构造函数中,或者在初始化时没有实现必需的类属性/方法。尝试扩展Button,而不是SimpleButton,看看它是否适合你。
<强> 修改 强> 我的第一个答案是在正确的轨道上,但仍然是错误的。问题是你正在创建你的Game1,Game2等类而不是调用GameButton类的构造函数。当您扩展具有REQUIRED构造函数参数的类时,必须使用super();所以在这种情况下,你需要在Game1类构造函数中调用:
super(positionX, positionY);
OR
您可以将GameButton构造函数修改为默认值,如下所示:
public function GameButton(var x:int = 0, var y:int = 0)
如果您不知道,super()只是一种访问基类构造函数的方法,也可以称为超类,这就是为什么该方法被称为super :)。希望这会有所帮助。
同时强>
另请注意,如果您在Flash IDE(在库中)中创建这些Game1,Game2类等,那么您将需要将自动添加默认值的路径添加到GameButton构造函数中为库对象生成类。或者,你仍然可以在预编译的库剪辑中创建图形,而不是在Export For Actionscript设置中定义类+基类,像在GameButton中一样手动创建一个实际的Game1 / Game2等类,然后在Export For中Actionscript区域放置了完整的限定类名。像这样: