From c656d48b720260f178bc85af5ddc9a2e7403d367 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Wed, 13 Sep 2023 18:30:12 +0200 Subject: [PATCH] =?UTF-8?q?demo:=20El=20teclado=20se=20crea=20y=20se=20des?= =?UTF-8?q?truye=20seg=C3=BAn=20se=20use=20o=20no?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 45 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/main.cpp b/main.cpp index f4a5580..dca44b9 100644 --- a/main.cpp +++ b/main.cpp @@ -33,7 +33,7 @@ Text *text; Text *debugText; Texture *texture; MovingSprite *sprite; -OnScreenKeyboard *osk; +OnScreenKeyboard *osk = nullptr; // Variables de uso general 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); } +// 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 void initSprite() { @@ -329,7 +353,7 @@ void initAll(char *argv[]) initText(); // Inicializa el teclado en pantalla - initOnScreenKeyboard(); + // initOnScreenKeyboard(); // Inicializa el sprite initSprite(); @@ -382,6 +406,13 @@ void checkEvents() screen->showNotification("Ejemplo de notificacion", "con 2 lineas de texto", 0); break; + case SDL_SCANCODE_T: + if (osk == nullptr) + initOnScreenKeyboard(); + else + deleteOnScreenKeyboard(); + break; + default: break; } @@ -534,11 +565,9 @@ void update() counter++; // Actualiza los objetos - osk->update(); - screen->update(); - - // Actualiza el sprite - updateSprite(); + updateOnScreenKeyboard(); // Actualiza el teclado en pantalla + screen->update(); // Actualiza la pantalla + updateSprite(); // Actualiza el sprite // Actualiza el efecto de fondo updateFX(); @@ -629,7 +658,7 @@ void render() renderText(); // Dibuja el teclado en pantalla - osk->render(); + renderOnScreenKeyboard(); // Vuelca el buffer en pantalla screen->blit();