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;
    }
}

ライブラリ内のシンボル MyClipA の基本クラスとして指定しましたが、理想的には、自分でクラスを作成しなくてMyClipも実行できるようにしたいと考えています。clip = new MyClipA(17);MyClipA

4

4 に答える 4

1

本当に出来ないと思います。でも、それが出来ればちゃんと原型と一緒です。おそらく、各デフォルト クラスのコンストラクターを変更できます。

于 2009-03-27T18:47:55.873 に答える
1

MyClipA や MYClipB などのクラスを作成する必要があるのは、MyClip オブジェクトの動作だけを持つオブジェクトにさまざまなアートを追加するためだと思いますか?

たぶん、別の方法でアプローチし、基本クラスを作成することができます-例として MyClip を作成し、2 つの引数を受け入れます。そのうちの 1 つはアートへの参照です。

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

これにも遭遇した場合。これを解決する適切な方法は、MyClip を継承する MyClipA と MyClipB のクラスを作成することです。MyClip に基づくクラスが多数ある場合、これは面倒な場合があります。繰り返しになりますが、その場合は、とにかく継承の代わりに構成を使用することを検討してください。

于 2009-03-25T06:15:44.883 に答える