Допустим, у меня есть определенный ClassA.
ClassB расширяет ClassA, и на сцене есть экземпляр Movie Clip, связанный с ClassB.
Как ClassC получит доступ к свойствам и методам ClassB без расширения ClassB или создания нового экземпляра ClassB?
В настоящее время я делаю это, ссылаясь на экземпляр stage, связанный с 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.
}
}
}
Итак, в основном я хочу знать, есть ли лучший способ получить значение classAvar (которое было объявлено в ClassA, получено после вызова метода в ClassB) при работе в ClassC.
Решено:
Хорошо, после некоторого исследования и идеи, которую я получил от daniel.sedlacek, кажется, что я нашел решение, которое наилучшим образом соответствует моим потребностям.
в классе B:
private static var _instance:ClassB;
public function ClassB() { // constructor
_instance = this;
}
public static function get FUN_GetInstance():ClassB {
return _instance;
}
в ClassC:
private var MC_VariablesContainer:ClassB
MC_VariablesContainer:MC_ClassB = ClassB.FUN_GetInstance