gpt4 book ai didi

flash - AS3 类/基类构造函数

转载 作者:行者123 更新时间:2023-12-04 06:31:24 24 4
gpt4 key购买 nike

我的后续 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 值,以便我可以将每个按钮放在不同的位置。但是,当我尝试 new Game(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 ,它工作正常。非常感谢。

最佳答案

这是两件事之一,要么你需要调用 super();从你的构造函数中,或者你没有在初始化时实现所需的类属性/方法。尝试扩展 Button,而不是 SimpleButton,看看它是否更适合您。

编辑
我的第一个答案是在正确的轨道上,但仍然是错误的。问题是您正在创建 Game1、Game2 等类,而不是调用 GameButton 类的构造函数。当您扩展具有必需构造函数参数的类时,您必须使用 super() 提供它们;所以在这种情况下,在你的 Game1 类构造函数中,你需要调用:

super(positionX, positionY);

或者

您可以修改 GameButton 构造函数以使用默认值,如下所示:
public function GameButton(var x:int = 0, var y:int = 0)

如果你不知道,super() 只是一种访问基类构造函数的方法,它也可以称为父类(super class),这就是为什么该方法被称为 super :)。希望这可以帮助。

还有

另请注意,如果您在 Flash IDE 中(在库中)创建这些 Game1、Game2 类等,那么您将需要采用向 GameButton 构造函数添加默认值的方法,因为 Flash 会自动为库对象。或者,您仍然可以在预编译的库剪辑中创建图形,而不是在 Export For Actionscript 设置中定义类 + 基类,而是像您为 GameButton 所做的那样手动创建实际的 Game1/Game2 等类,然后在 Export For Actionscript 区域放全限定类名。像这样:

enter image description here

关于flash - AS3 类/基类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5371347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com