Pausa y Reanudación de un juego. Java Game 8
Incluso, en el juego más emocionante, llega un momento en que el usuario quiere pausar y reanudar más adelante.
La documentación de Java para la clase Thread recomienda utilizar wait() y notify() para implementar la pausa y reanudar la funcionalidad. La idea es suspender la animación, pero el hilo del distribuidor de eventos aún responderá a la actividad del GUI (escritorio).
Para implementar este enfoque, se puede introducir un booleano isPaused, que se establece en true vía el método pauseGame():
El indicador 'isPaused=true' se detecta en run() y activa una llamada wait() para suspender la animación. El subproceso se reanuda con resumeGame() o stopGame(), los cuales llaman notify().
Estos métodos deben sincronizarse para que el hilo de la animación no pierda la notificación
y permanezcan suspendidos indefinidamente.
Las situaciones que provocan pausa y reanudación varían entre los diferentes tipos de programas Java.
En un applet, la animación se debe pausar cuando el applet se detiene y se debe reanudar cuando el applet sea reiniciado por el navegador. Una parada ocurre cuando el usuario dej la página, por ejemplo, para ir a otra página. Cuando el usuario vuelve a la página, el applet se inicia de nuevo. La misma secuencia debe ser activada cuando el usuario minimiza la página del applet y la vuelve a abrir más tarde.
En una aplicación, la pausa debe iniciarse cuando la ventana se minimiza o se desactiva, y la ejecución debe reanudarse cuando se amplía o se activa la ventana. Una ventana se desactiva cuando se oculta y se activa cuando se vuelve a traer al frente.
La documentación de Java para la clase Thread recomienda utilizar wait() y notify() para implementar la pausa y reanudar la funcionalidad. La idea es suspender la animación, pero el hilo del distribuidor de eventos aún responderá a la actividad del GUI (escritorio).
Para implementar este enfoque, se puede introducir un booleano isPaused, que se establece en true vía el método pauseGame():
El indicador 'isPaused=true' se detecta en run() y activa una llamada wait() para suspender la animación. El subproceso se reanuda con resumeGame() o stopGame(), los cuales llaman notify().
Estos métodos deben sincronizarse para que el hilo de la animación no pierda la notificación
y permanezcan suspendidos indefinidamente.
Las situaciones que provocan pausa y reanudación varían entre los diferentes tipos de programas Java.
En un applet, la animación se debe pausar cuando el applet se detiene y se debe reanudar cuando el applet sea reiniciado por el navegador. Una parada ocurre cuando el usuario dej la página, por ejemplo, para ir a otra página. Cuando el usuario vuelve a la página, el applet se inicia de nuevo. La misma secuencia debe ser activada cuando el usuario minimiza la página del applet y la vuelve a abrir más tarde.
En una aplicación, la pausa debe iniciarse cuando la ventana se minimiza o se desactiva, y la ejecución debe reanudarse cuando se amplía o se activa la ventana. Una ventana se desactiva cuando se oculta y se activa cuando se vuelve a traer al frente.
Comentarios
Publicar un comentario