将参数传递给AS3自动创建的资产类的构造函数

时间:2009-03-25 02:29:49

标签: actionscript-3 constructor parameters auto-generate assets

我正在创建一个要用于多个库资源的MovieClip子类(我们称之为MyClip)。我将从ActionScript代码中实例化这些影片剪辑。 MyClip有一个构造函数参数,允许它设置某些属性的初始值。

由于我想将它用于多个库资源,所以这样做的逻辑方法似乎是在“符号属性”对话框的“基类”文本框中指定它。问题是自动生成的子类没有带参数的构造函数。相反,Flash尝试仅使用默认构造函数生成它们,这也会失败,因为MyClip没有默认构造函数。

除了将属性初始化推迟到正常方法之外,还有什么方法吗?

编辑:我还不够清楚,我会在这里澄清一下。如果这是MyClip类:

public class MyClip extends MovieClip
{
    private var someValue : Number;

    public function MyClip(someValue : Number)
    {
        this.someValue = someValue;
    }
}

我指定MyClip作为库中符号MyClipA的基类,理想情况下我希望能够clip = new MyClipA(17);而不必自己编写MyClipA类。

4 个答案:

答案 0 :(得分:1)

我认为不能真的做到。 但是如果可以做到的话,它将适用于原型。也许您可以更改每个默认类的构造函数。

答案 1 :(得分:1)

我假设您需要创建MyClipA和MYClipB的原因,等等类是将不同的艺术附加到只具有MyClip对象行为的对象?

也许你可以采用不同的方法,制作你的基类 - MyClip就像你的例子一样,接受2个结果,其中一个就是艺术的参考:

public class MyClip extends MovieClip
{
    public var art:ArtBaseClass
    private var someValue : Number;

    public function MyClip(someValue : Number, artClass:ArtBaseClass)
    {
        this.someValue = someValue;
        this.art = new artClass();
        this.addChild(art);
    }
}

您可以在应用于每个艺术库对象的ArtBaseClass中定义您需要的任何其他内容。

答案 2 :(得分:0)

尝试为构造函数指定默认参数(null作为特殊值,也许?)。然后在构造函数的开头添加一些错误检查,为MovieClip设置合理的默认值。这真的很酷,但据我所知,没有更好的方法来使用拖拽和放大器。放下动画UI(你只能通过代码完成)。

答案 3 :(得分:0)

如果遇到这个问题。解决它的正确方法是为从MyClip继承的MyClipA和MyClipB创建类。如果有很多基于MyClip的类,这可能很麻烦。然后,如果是这种情况,您可能想要开始考虑使用合成而不是继承。