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

Actionscript 3 将参数传递给AS3自动创建的资产类的构造函数,actionscript-3,constructor,parameters,auto-generate,assets,Actionscript 3,Constructor,Parameters,Auto Generate,Assets,我正在创建一个MovieClip子类(我们称之为MyClip),我想将其用于几个库资产。我将从ActionScript代码中实例化这些电影剪辑MyClip有一个构造函数参数,允许它设置某些属性的初始值 由于我希望将其用于多个库资源,因此,逻辑上的做法似乎是在“符号属性”对话框的“基类”文本框中指定它。问题是自动生成的子类没有带参数的构造函数。相反,Flash尝试仅使用默认构造函数生成它们,这也会失败,因为MyClip没有默认构造函数 除了将属性初始化推迟到一个普通方法之外,还有其他方法可以解决这

我正在创建一个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
作为symbol MyClipA的基类,我希望能够理想地执行
clip=new MyClipA(17)
而不必自己编写
MyClipA
类。

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

如果你也遇到了这个问题。解决这个问题的正确方法是为MyClipA和MyClipB创建继承自MyClip的类。如果有很多基于MyClip的类,这可能会很麻烦。再说一次,如果是这样的话,你可能想开始考虑使用组合而不是继承。
但是,如果能够做到,它将正确地与原型。也许您可以更改每个默认类的构造函数。

我假设您需要创建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中定义所需的任何其他内容。

如果我实际上不需要该参数,这将起作用。按照目前的方式,我可能必须将该类保留为默认构造函数,并在构建对象后实现“initialize”方法来进行初始化。这太糟糕了;)你找到解决办法了吗?没有。真的没有办法做到这一点。如果这是您所面临的情况,那么您最好将初始化推迟到一个正常的方法或重构类,如下面所建议的quoo。