我创建一个影片剪辑子类(姑且称之为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类自己。

有帮助吗?

解决方案

我假设你需要创建MyClipA和MYClipB等类的原因是不同的艺术重视,仅仅有一个MyClip对象的行为对象?

也许你可以另一种方式讨论,让你的基类 - MyClip因为你拥有它你的榜样,接受2个aruguments,其中之一是现有技术的引用:

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需要任何其他人。

其他提示

我不认为这真的可以做到。 但如果是可以做到的,这将是正确与原型。也许可以改变每个默认类的构造器。

尝试指定为构造默认参数(null作为一个特殊的值,也许?)。然后在该设置合理的默认设置为你的影片剪辑的构造函数的开头加了一点错误检查。这真是哈克,但据我所知,有没有更好的办法来做到这一点使用拖放动画用户界面(你只能做它通过代码)。

如果碰到了这一点。解决这个问题的正确方法是创建一个从MyClip继承MyClipA和MyClipB类。如果有很多是基于MyClip类这可能比较麻烦。再说,如果是这样的话,你可能要开始考虑使用,而不是继承的组成反正。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top