Flash CS5 hace referencia a un objeto de visualización en el constructor de una clase no documental

Después de conocer este excelente método para acceder a un objeto colocado en el escenario en Flash CS5 en una clase que no sea la clase de documento (se encuentraen este hilo), Me he encontrado con un punto de tropiezo. Estoy usand

this.stage.getChildAt(0).greenLight1.visible=false;

para activar un símbolo con el nombre de instancia greenLight1 invisible al acceder a greenLight1 (el nombre de instancia especificado en mi .fla para el mapa de bits). Esto funciona perfectamente donde lo estaba usando, que está en una subfunción de algunas clases diferentes. El problema con el que me encuentro es que no puedes usar esto en el constructor de estas clases que no son documentos, o en cualquier función llamada directamente por el constructor. Si trato de hacer eso, aparece el siguiente "Error # 1009: No puedo acceder a una propiedad o método de una referencia de objeto nulo".

Así que me imagino que no estoy accediendo a esto correctamente y empiezo a jugar con la frase. Cuando lo cambio a

this.getChildAt(0).greenLight1.visible=false;

Me sale un error diferente "1119: Acceso a la propiedad posiblemente indefinida greenLight1 a través de una referencia con tipo estático flash.display: DisplayObject". Obviamente me estoy perdiendo algo aquí.

Ahora probé una táctica diferente que encontré eneste hilo que también mencioné en el enlace de hilo anterior que configuré. Y gracias al comentario de Allan en mi otro hilo, conseguí que ese método funcionara. Sin embargo, cuando trato de colocar esa referencia en la clase de constructor de cualquier otra clase no documental, obtengo el mismo "Error # 1009: No puedo acceder a una propiedad o método de una referencia de objeto nulo". Pero funciona bien si lo uso en una subfunción. Parece el mismo problema.

Mi proyecto consiste en un archivo Game.fla que contiene varios símbolos de mapa de bits y varios botones que coloqué en mi Biblioteca y arrastré al escenario (y les di todos los nombres de instancia únicos). He configurado mi clase de documentos Game.as y dentro de ella, puedo acceder a todos estos elementos sin fallar simplemente usando su nombre de instancia. Ahora en mi subclase llamada Player.as, configuré una función llamada lightsOut () que apaga las luces usando un interruptor / estuche. Es allí donde estoy usando "this.stage.getChildAt (0) .greenLight1.visible = false;" y está funcionando perfectamente Aquí también es donde configuré la táctica diferente que mencioné anteriormente e intenté "Game.GL1.visible = false;" y eso funcionó perfectamente también. Pero luego, en mi subclase llamada Controller.as donde tengo todos mis controladores de mouse y teclado, traté de configurar un detector de eventos para uno de mis botones de escenario. Así que lo puse en la función de constructor Controlador donde tengo todos mis otros oyentes de eventos configurados y funcionando (usan "stage.addeventlistener ...") y fue aquí donde comencé a ver errores. Así que pensé que intentaría apagar el greenLight1 ya que ya sabía que el código estaba funcionando y probé tanto la línea "this.stage.getChildAt ...." como la línea "Game.GL1 ..." solamente verlos causar los errores que mencioné anteriormente. Así que volví a mi clase Player.as y los probé en su clase de constructor Player y una vez más obtuve los mismos errores a pesar de que estoy usando la misma línea inferior en la clase Player.as muy bien. Tenga en cuenta que he pasado la etapa al controlador y al jugador y la he estado usando bien en ambos. También intenté configurar una llamada a otra función en el constructor llamada Init (); y obtuve el mismo error al intentar acceder a greenLight1 allí también, pero aún funcionó en lightsOut (). Tampoco estoy seguro de si es importante, pero todas las clases también extienden MovieClip. No sé si esto ayudará, pero aquí está el comienzo de la clase Player junto con la función lightsOut. He eliminado el resto del código porque no está relacionado:

package {
import flash.events.Event;
import flash.display.MovieClip;
import flash.display.DisplayObject;

public class Player extends MovieClip {
    private var _stage:Object;
    private var _lights:uint;

    public function Player(stage:Object):void {
        this._stage = stage;
        this._stage.getChildAt(0).greenLight1.visible=false; //errors
        addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
    }
    private function lightsOut():void {
        switch(_lights) {
            case 1:
            this._stage.getChildAt(0).greenLight1.visible=false;//works
            break;
            case 2:
            this._stage.getChildAt(0).greenLight2.visible=false;//works
            break;
            case 3:
            this._stage.getChildAt(1).greenLight3.visible=false;//works
            break;
        }
    }

¿Que me estoy perdiendo aqui

EDIT: OK, aquí está la clase de documento (al menos lo que es importante para el Controlador y el Jugador):

public class Game extends MovieClip {
    private var _player:Player = new Player(stage);
    private var _controller:Controller = new Controller(_player, stage);

    public function Game():void {
        addChild(_player);
        addEventListener(Event.ADDED_TO_STAGE, added);

Aquí es la parte importante de la clase Controller y agregué un comentario a lo que está fallando (la verdadera razón por la que comencé esta publicación en primer lugar):

public class Controller extends MovieClip {
private var _stage:Stage;
private var _model:Object;

public function Controller(model:Object, stage:Stage):void {
    this._model = model;
    this._stage = stage;

    _stage.addEventListener(KeyboardEvent.KEY_DOWN, processKeyDown);
    _stage.addEventListener(KeyboardEvent.KEY_UP, processKeyUp);
    _stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
    this._stage.getChildAt(0).fireButton.addEventListener(MouseEvent.CLICK, onClick); //this is what isn't working
    this._stage.getChildAt(1).greenLight1.visible=false; //added this for testing

Esa última línea que solo agregué para ver si podía hacer que greenLight1 se volviera invisible como puedo cuando lo llamo en la función lightsOut () que anoté en Player.as. Pero tampoco funciona cuando se coloca aquí en el Constructor. ¡¡¡¡AYUDA!!!! jajaja

Respuestas a la pregunta(3)

Su respuesta a la pregunta