Juego de plataforma de creación, necesita un método para dejar de correr

Estoy haciendo un juego de plataformas en flash.

Tengo una clase de objetivo (la clase que contiene el código para el sprite de objetivo, donde cuando lo golpeas, continúa a la siguiente parte del juego).

Dentro del constructor de objetivos, se agregan 2 oyentes de eventos, que son los siguientes:

addEventListener(Event.ADDED, beginClass);
addEventListener(Event.ENTER_FRAME, eFrame);

La función beginClass está bien, y solo se ejecuta una vez, pero eFrame es lo que comprueba si el jugador ha alcanzado el objetivo, por lo que se ejecuta constantemente. El problema es que, una vez que el jugador alcanza la meta, eFrame continúa ejecutándose, mientras está en un menú que describe la siguiente escena para el jugador. Mi función eFrame está debajo.

    private function eFrame(event:Event):void{
        if(hitTestObject(_root.mcMain)){
            var lastScore:int = _root.mainScore;
            _root.mainScore = lastScore;
            while (_root.lvlHolder.numChildren > 0) {
                    _root.lvlHolder.removeChildAt(0);
            }
            _root.mcMain.removeChildAt(0);
            _root.isInCut = true;
            if (_root.lvlCurrent == 1) {
                _root.gotoAndStop(2);
            } else if (_root.lvlCurrent == 2) {
                _root.gotoAndStop(3);
            } else if (_root.lvlCurrent == 3) {
                _root.gotoAndStop(4);
            }
        }
    }

Frames 2, 3, 4, son cuadros con solo texto y un botón que muestra un mensaje al jugador, y luego los golpes del jugador continúan. Mi problema es que eFrame todavía está intentando ejecutarse, pero la clase no se ha instanciado y el método está causando grandes retrasos una vez que el jugador continúa.

Respuestas a la pregunta(6)

Su respuesta a la pregunta