Limpiando la pantalla para nuevas gráficas en Java (awt)
Tengo este código que básicamente es un menú principal con dos rectángulos clicables.
– Iniciar juego
– Información
Iniciar juego funciona bien.
La información es lo que no funciona realmente. Cuando se presiona, la pantalla de información aparecerá, pero los botones del menú principal seguirán allí aunque no sean visibles (se pueden hacer clic)… parece que cuando el menú de información está apareciendo, los botones del menú principal no se borran.
Además, cualquier punto en el menú de información es cliclable y mostrará nuevamente el menú principal (no es lo que se pretendía, solo los botones de retroceso deberían hacer eso).
¿Cómo puedo solucionar esos problemas?
davy.ai
Hay dos problemas descritos:
Para solucionar el primer problema, necesitamos actualizar el método
drawMenu()
. Actualmente, primero verifica siinfoClicked
estrue
. Si es así, llama al métododrawInfoMenu()
y devuelve al método. De lo contrario, procede a dibujar el menú principal. Sin embargo, no borra ningún componente dibujado previamente. Para solucionarlo, se debe agregar una llamada ag2d.clearRect()
para borrar los componentes dibujados previamente antes de dibujar el menú principal. Por ejemplo:Para solucionar el segundo problema, necesitamos restringir el área seleccionable solo a los botones de retroceso. Actualmente, el método
mouseClicked()
verifica si el punto del clic del mouse está contenido en el botón de inicio o en el botón de información, y si es así, habilita o muestra la pantalla correspondiente. Para restringir el clic solo al botón de retroceso, podemos agregar una verificación adicional para la banderainfoClicked
en el métodomouseClicked()
, y solo habilitar la pantalla del menú principal cuando esta bandera estrue
. Por ejemplo:Ahora, hacer clic en cualquier lugar que no sea el botón de retroceso en la pantalla de información no tendrá ningún efecto, y solo el botón de retroceso habilitará la pantalla del menú principal.