0

どうすればいいですか?

public class SuperClass extends MovieClip {
  public static var test:String = 'Hello world';
}

public class SubClass extends SuperClass {
  public function SubClass() {
    var unit = new Unit();
    addChild(Unit);
  }
}

public class Unit extends MovieClip {
  public function Unit() {
    //Get variable:test from SuperClass??
    trace(SubClass.test); //Error
  }
}

私が何をしたいのか理解していただけますか?サブクラスに追加された新しいユニットのスーパークラスから変数「テスト」を取得したい。

ありがとう!

4

1 に答える 1

0

この場合、named という名前のクラスは、継承ではなく合成を通じてクラスをSubClass使用します。Unitそのため、Unitクラスは、プロパティのようなプロパティについて何SubClassも認識していません。SuperClasstest

ただし、コンストラクターを介して値をクラスに渡すことができますUnit(または、値をクラスのプロパティに直接設定するだけですUnit)。

(最後の 2 つのクラスのみを表示)

public class SubClass extends SuperClass {

  public function SubClass() {
    var unit = new Unit(test);
    addChild(Unit);
  }
}

public class Unit extends MovieClip {

  private var test:String;

  public function Unit(test:String) {
    this.test = test;
  }
}

[編集]

UnitクラスはSubClass(and/or ) の多くのプロパティにアクセスする必要があるため、 toSuperClassのインスタンスを渡すだけでよい場合があります。SubClassUnit

public class SubClass extends SuperClass {

  public function SubClass() {
    var unit = new Unit(this);
    addChild(Unit);
  }
}

public class Unit extends MovieClip {

  private var subClass:SubClass;

  public function Unit(subClass:SubClass) {
    this.subClass = subClass;
    trace(subClass.text);
  }
}

これを実際にどのように解決するかは、ユースケースによって異なります。しかし、あなたが求めていることを実行するための基本的な近道はありません。

于 2012-08-27T16:16:47.097 に答える