Предположим, у меня есть определенный ClassA. ClassB расширяет ClassA, и на сцене, связанной с ClassB, есть экземпляр Movie Clip.Как получить доступ к свойствам и методам класса без расширения или создания?
Как ClassC мог получить доступ к свойствам и методам ClassB без расширения класса B или создания нового экземпляра 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.
}
}
}
Так что я в принципе хочу знать, если есть лучший способ, чтобы получить значение classAvar (который был объявлен в ClassA, получил значение после вызова метода в ClassB) при работе в ClassC.
Решено:
Хорошо, после некоторого исследования и идеи я получил от daniel.sedlacek, мне кажется, что я нашел решение, которое наилучшим образом соответствует моим потребностям.
в ClassB:
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
Возможно, было бы лучше решить его по-другому. Обычно полезно стремиться к созданию инкапсулированных и развязанных классов. Отправьте некоторый код, и мы сможем предложить улучшения :) –
Я бы разместил код, над которым я работаю, но это очень сложная структура загрузчиков, и я считаю, что в итоге это было бы неважно, вместо этого я попробуйте указать, что я ищу, с помощью простого кода примера (добавленного как редактирование вопроса). Спасибо, Джонатан! – IneedHelp