flash - Accediendo a la clase de documento en AS3
actionscript-3 oop (3)
La clase de documento no es intrínsecamente un objeto accesible a nivel mundial. Si desea llamar a métodos que están en la clase de documento, siempre tendrá que pasar una referencia de Main a cualquier otra clase / objeto que desee llamar a sus métodos. Un enfoque más orientado a objetos sería enviar eventos de sus otras clases (Otro) para que la clase Principal los escuche y llame a un método apropiado en sí mismo.
Si no le preocupa mantener una buena estructura de POO y desea acceder a la clase de documento desde un objeto de visualización que se ha agregado a la lista de visualización, puede intentar algo como: stage.getChildAt( 0 );
¿Cómo pueden las clases instanciadas acceder a la clase Document?
Incluso después de nombrar la clase de documento utilizando la barra de propiedades en Flash, al intentar acceder a ella desde otras clases generalmente falla, diciendo "intentando acceder a una propiedad indefinida ...
Una solución es siempre lanzar la clase Document a sí mismo. p.ej.
Main(Main).globalMethod();
Pero a veces incluso este juego estelar fracasa, y generalmente no hay salida, ¡aparte de lo obvio!
class Other{
var parentClass:Main;
public function Other(parent:Main){
parentClass = parent; // pointer to the Main class in a local var!
Main(parentClass).globalMethod();
}
}
Puede usar un singleton para su clase de documento ( Main
, en su ejemplo), que le permite acceder a la instancia desde cualquier lugar.
public class Main extends Sprite {
private static var _instance:Main;
public static function get instance():Main { return _instance; }
public function Main() {
_instance = this;
// etc...
}
// etc...
}
Luego accedes a la instancia Main
como esta:
public class Other {
public function Other() {
Main.instance.usefulInstanceMethod();
}
}
La clase de documento es un buen candidato para el patrón singleton, porque en general solo debería haber una instancia disponible.
Solo una nota al margen, pero la respuesta más breve a esta pregunta es: de la misma manera que cualquier clase accede a cualquier otra clase. Es decir, con una referencia directa o una exposición estática. La clase de documento no es diferente de cualquier otra clase en este sentido.