demo: El teclado se crea y se destruye según se use o no

This commit is contained in:
2023-09-13 18:30:12 +02:00
parent 2d03333463
commit c656d48b72

View File

@@ -33,7 +33,7 @@ Text *text;
Text *debugText; Text *debugText;
Texture *texture; Texture *texture;
MovingSprite *sprite; MovingSprite *sprite;
OnScreenKeyboard *osk; OnScreenKeyboard *osk = nullptr;
// Variables de uso general // Variables de uso general
Uint32 ticks = 0; // Variable para la frecuencia de actualización de la lógica del programa Uint32 ticks = 0; // Variable para la frecuencia de actualización de la lógica del programa
@@ -251,6 +251,30 @@ void initOnScreenKeyboard()
osk->setChars(USE_UPPER | USE_LOWER | USE_NUMBER); osk->setChars(USE_UPPER | USE_LOWER | USE_NUMBER);
} }
// Elimina el teclado en pantalla
void deleteOnScreenKeyboard()
{
if (osk != nullptr)
{
delete osk;
osk = nullptr;
}
}
// Dibuja el teclado en pantalla
void renderOnScreenKeyboard()
{
if (osk != nullptr)
osk->render();
}
// Actualiza el teclado en pantalla
void updateOnScreenKeyboard()
{
if (osk != nullptr)
osk->update();
}
// Inicializa el sprite // Inicializa el sprite
void initSprite() void initSprite()
{ {
@@ -329,7 +353,7 @@ void initAll(char *argv[])
initText(); initText();
// Inicializa el teclado en pantalla // Inicializa el teclado en pantalla
initOnScreenKeyboard(); // initOnScreenKeyboard();
// Inicializa el sprite // Inicializa el sprite
initSprite(); initSprite();
@@ -382,6 +406,13 @@ void checkEvents()
screen->showNotification("Ejemplo de notificacion", "con 2 lineas de texto", 0); screen->showNotification("Ejemplo de notificacion", "con 2 lineas de texto", 0);
break; break;
case SDL_SCANCODE_T:
if (osk == nullptr)
initOnScreenKeyboard();
else
deleteOnScreenKeyboard();
break;
default: default:
break; break;
} }
@@ -534,11 +565,9 @@ void update()
counter++; counter++;
// Actualiza los objetos // Actualiza los objetos
osk->update(); updateOnScreenKeyboard(); // Actualiza el teclado en pantalla
screen->update(); screen->update(); // Actualiza la pantalla
updateSprite(); // Actualiza el sprite
// Actualiza el sprite
updateSprite();
// Actualiza el efecto de fondo // Actualiza el efecto de fondo
updateFX(); updateFX();
@@ -629,7 +658,7 @@ void render()
renderText(); renderText();
// Dibuja el teclado en pantalla // Dibuja el teclado en pantalla
osk->render(); renderOnScreenKeyboard();
// Vuelca el buffer en pantalla // Vuelca el buffer en pantalla
screen->blit(); screen->blit();