1

MyClip我正在创建一个想要用于多个库资产的 MovieClip 子类(我们称之为)。我将从 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

4 回答 4

1

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

于 2009-03-27T18:47:55.873 回答
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 中定义您需要的任何其他内容。

于 2009-04-23T15:53:34.630 回答
0

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

于 2009-03-25T02:36:30.183 回答
0

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

于 2009-03-25T06:15:44.883 回答