我正在创建一个要用于多个库资源的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
类。
答案 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的类,这可能很麻烦。然后,如果是这种情况,您可能想要开始考虑使用合成而不是继承。