demo: El teclado se crea y se destruye según se use o no
This commit is contained in:
45
main.cpp
45
main.cpp
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user