【问题标题】:Passing parameters to constructor for an AS3 auto-created asset class将参数传递给 AS3 自动创建的资产类的构造函数
【发布时间】:2010-10-15 08:48:25
【问题描述】:

我正在创建一个想要用于多个库资产的 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 类。

【问题讨论】:

  • 您找到解决方案了吗?
  • 不。真的没有办法做到这一点。如果这是您面临的情况,那么您最好的选择是将初始化推迟到普通方法或重组类,如下面建议的那样。

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


【解决方案1】:

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

【讨论】:

  • 如果我实际上不需要该参数,那将起作用。事情是这样的,我可能不得不使用默认构造函数离开类,并在构造对象后实现“初始化”方法来进行初始化。这很糟糕;)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我假设您需要创建 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 中定义您需要的任何其他内容,以应用于这些艺术库对象中的每一个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 2015-10-11
        • 1970-01-01
        • 1970-01-01
        • 2022-01-13
        • 2015-04-26
        相关资源
        最近更新 更多