Métodos y propiedades de la escena de acceso de Cocos2d

Estoy tratando de incluir una función de pausa para mi juego. hasta ahora corriendo pause al [CCDirector sharedDirector] ha sido lo suficientemente bueno cuando se ejecuta a través de mi pauseGame método (que incorpora un BOOL para saber si el juego está en pausa, etc.)

Sin embargo, noté que si vuelvo a la pantalla de inicio de mi dispositivo, el delegado de mi aplicación se ejecutará automáticamente pause and resume al sharedDirector.

Idealmente, me gustaría acceder a mi escena/capa activa para poder ejecutar mi propio método de pausa.

¿Cómo puedo: 1) verificar si la escena actual es mi escena del juego 2) acceder a la propiedad de pausa de la escena del juego y ejecutar el método pauseGame en ella?

Cualquier ayuda apreciada. Gracias

preguntado el 11 de junio de 12 a las 19:06

2 Respuestas

La escena de la carrera es [CCDirector sharedDirector].runningScene

Si llamas [scene pauseSchedulerAndActions]; en la escena actual, esto no se reanudará al avanzar y retroceder en la pantalla de inicio.

Si necesita pausar TODOS los nodos en la jerarquía, aquí hay un método para extender CCNode

-(void)recursivePauseSchedulerAndActions {
    [self pauseSchedulerAndActions];
    CCNode *child;
    CCARRAY_FOREACH(children_, child) {
        [child recursivePauseSchedulerAndActions];
    }
}
-(void)recursiveResumeSchedulerAndActions {
    [self resumeSchedulerAndActions];
    CCNode *child;
    CCARRAY_FOREACH(children_, child) {
        [child recursiveResumeSchedulerAndActions];
    }
}

Respondido el 11 de junio de 12 a las 19:06

Hola, gracias por tu sugerencia. Un problema que tengo con la pausa o pauseSchedulerWithActions es que tengo sprites en la pantalla que implementan el toque. Entonces, mientras el juego está en pausa, aún puedes arrastrarlos. Es por eso que intenté usar mi propio método de pausa en el juego, que elimina los delegados táctiles y los vuelve a agregar. Es por eso que preferiría usar mi propio método dentro de la clase. ¿Algunas ideas? Gracias - user339946

Yo uso un enfoque diferente para pausar un juego.

Normalmente tengo una escena de juego con capas de juego. Para pausar el juego, agrego una nueva capa (que cubre toda la pantalla) y cuando pausa el juego, muestro esta capa. De esta manera, puede dejar de tocar eventos para la capa del juego y restaurarlos al reanudar el juego (y eliminar la capa de pausa de la escena)

Respondido el 12 de junio de 12 a las 09:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.