flash actionscript-3 oop class document-class

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.