假设我有一个定义的 ClassA。ClassB 扩展了 ClassA,舞台上有一个与 ClassB 链接的 Movie Clip 实例。
ClassC 如何在不扩展 ClassB 或创建 ClassB 的新实例的情况下访问 ClassB 的属性和方法?
我目前这样做的方式是引用链接到 ClassB 的阶段实例,然后使用点语法访问 ClassB 实例变量,这仅在访问的变量是公共的或内部的时才有效,具体取决于包 ClassC 的一部分的。我想知道是否有更好、更清洁的方法来实现这一点。
编辑:代码示例。
package com.core.stage.classes {
import flash.display.MovieClip;
public class ClassA extends MovieClip {
public var classAvar:uint = 0;
public function ClassA() {
}
protected function classAfunction(funPar:uint):void {
classAvar = 2 * funPar;
}
}
}
package com.core.stage.classes {
import com.core.stage.classes.ClassA;
public class ClassB extends ClassA {
public function ClassB() {
classAfunction(10);
}
}
}
package com.core.stage.classes {
import flash.display.MovieClip;
public class ClassC extends MovieClip {
private var classBreference:*;
public function ClassC() {
classBreference = Object(parent);
trace(classBreference.classAvar); // Outputs 20.
}
}
}
所以我基本上想知道的是在ClassC中工作时是否有更好的方法来获取classAvar的值(在ClassA中声明,在调用ClassB中的方法后得到一个值)。
解决了:
好的,经过一些研究和我从 daniel.sedlacek 得到的一个想法,我似乎找到了最适合我需要的解决方案。
B类:
private static var _instance:ClassB;
public function ClassB() { // constructor
_instance = this;
}
public static function get FUN_GetInstance():ClassB {
return _instance;
}
在 C 类中:
private var MC_VariablesContainer:ClassB
MC_VariablesContainer:MC_ClassB = ClassB.FUN_GetInstance