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

在这种情况下,您命名的类通过组合而不是继承SubClass使用该类。Unit因此,该类对它们的任何属性(如属性)Unit一无所知。SubClassSuperClasstest

但是,您可以Unit通过它的构造函数将值传递给类(或者直接将值设置到Unit类的属性上):

(仅显示最后两个类)

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 SuperClass) 的许多属性,您可能只想传递一个SubClassto的实例Unit

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 回答