Eventos, objetos y propiedades en LiveCode
Daniela abre la aplicación de su Joven Club y pulsa un botón: aparece un mensaje. Lo pulsa otra vez y el mensaje desaparece. Nadie le dio órdenes paso a paso; el programa simplemente esperaba a que ella hiciera algo. ¿Qué es lo que «espera» el programa y cómo se le dice qué hacer cuando ocurre? Lo vas a descubrir en este apartado.
Objetos: las piezas del programa
En LiveCode no se escribe un programa como una lista larga de instrucciones. Se dibuja la interfaz con piezas y a cada pieza se le da un comportamiento. Esas piezas se llaman objetos.
Los objetos se organizan en niveles, como las muñecas rusas:
-
Pila (stack): el archivo completo, la aplicación.
-
Tarjeta (card): una pantalla de la pila. Una pila puede tener varias, como las hojas de un cuaderno.
-
Botón (button): se pulsa para que ocurra algo.
-
Campo (field): una caja de texto; sirve para mostrar o escribir datos.
Cada objeto se nombra en el script con su tipo y su nombre entre comillas: button "Aceptar", field "nombre".
En un programa de LiveCode se usan botones, campos de texto, tarjetas (cards) y una pila (stack). Explica con tus palabras qué es un objeto en este entorno. Menciona dos…
En un programa de LiveCode se usan botones, campos de texto, tarjetas (cards) y una pila (stack).
Explica con tus palabras qué es un objeto en este entorno. Menciona dos objetos que se puedan colocar en una tarjeta y para qué sirve cada uno.
Eventos: lo que hace el usuario
Un programa dirigido por eventos no avanza solo: espera a que ocurra algo y entonces reacciona.
| Evento | Cuándo ocurre |
|---|---|
mouseDown |
Se presiona el botón del ratón sobre el objeto |
mouseUp |
Se suelta el botón del ratón sobre el objeto (el «clic» completo) |
openCard |
Se abre una tarjeta, es decir, aparece esa pantalla |
keyDown |
Se pulsa una tecla del teclado |
Un clic tiene dos momentos: primero mouseDown (bajas el dedo) y después mouseUp (lo sueltas). Por eso casi todos los botones usan mouseUp: la acción ocurre cuando el clic se completa.
En la programación dirigida por eventos, los objetos reaccionan cuando ocurre algo. Define qué es un evento y explica qué hace cada uno de estos: mouseUp mouseDown…
En la programación dirigida por eventos, los objetos reaccionan cuando ocurre algo.
Define qué es un evento y explica qué hace cada uno de estos:
-
mouseUp -
mouseDown -
openCard -
keyDown
Propiedades: cómo es cada objeto
Cada objeto tiene propiedades: características que describen cómo es y que se pueden consultar o cambiar. Algunas muy usadas:
-
visible: si el objeto se ve (true) o está oculto (false). -
width: su ancho en píxeles. -
backgroundColor: el color de fondo.
Se cambian con la instrucción:
set the propiedad of objeto to valor
Por ejemplo: set the width of button "Aceptar" to 150.
Ahora puedes separar tres ideas que suelen mezclarse:
| Concepto | Pregunta que responde | Ejemplos |
|---|---|---|
| Objeto | ¿Sobre qué actúo? | button "Aceptar", field "nombre" |
| Evento | ¿Cuándo ocurre? | mouseUp, openCard |
| Propiedad | ¿Qué característica cambio? | visible, width, backgroundColor |
Clasifica cada término como objeto, evento o propiedad en LiveCode: button "Aceptar" mouseUp backgroundColor field "nombre" visible width
Clasifica cada término como objeto, evento o propiedad en LiveCode:
-
button "Aceptar" -
mouseUp -
backgroundColor -
field "nombre" -
visible -
width
Leer y escribir un script
Un script se escribe dentro de un objeto, y siempre tiene esta forma:
on evento
instrucciones
end evento
Se lee así: «cuando ocurra este evento en este objeto, haz estas instrucciones».
Ahora te toca escribir uno.
Analiza este script, escrito en un botón: Indica el objeto que contiene el script, el evento que lo activa, el objeto afectado, la propiedad que se modifica y el valor…
Analiza este script, escrito en un botón:
on mouseUp
set the visible of field "info" to false
end mouseUp
Indica el objeto que contiene el script, el evento que lo activa, el objeto afectado, la propiedad que se modifica y el valor que se le asigna. Explica qué verá el usuario al hacer clic.
Escribe un script para un botón llamado «Cambiar». Cuando el usuario suelte el botón del ratón sobre él, el campo «Mensaje» debe cambiar su color de fondo a rojo y su…
Escribe un script para un botón llamado «Cambiar». Cuando el usuario suelte el botón del ratón sobre él, el campo «Mensaje» debe cambiar su color de fondo a rojo y su texto a «Listo».
Indica qué evento, qué objeto y qué propiedades intervienen.
Propiedades personalizadas
Las propiedades como width o visible ya vienen con LiveCode: son predefinidas. Pero a veces necesitas guardar un dato que LiveCode no conoce: los puntos de un juego, el precio de un producto, el número de intentos.
Para eso existen las propiedades personalizadas: las crea el usuario, con el nombre que quiera, y se guardan dentro de un objeto. Se usan con la misma instrucción:
set the cPuntos of button "Jugar" to 0
Esto crea (o cambia) la propiedad cPuntos del botón «Jugar» y le da el valor 0. Se lee con the cPuntos of button "Jugar".
| Predefinida | Personalizada | |
|---|---|---|
| Quién la define | LiveCode | El programador |
| Ejemplos | width, visible |
cPuntos, cPrecio, cStock |
| Qué guarda | Aspecto o comportamiento del objeto | Un dato propio de tu programa |
LiveCode permite definir propiedades personalizadas, es decir, propiedades creadas por el usuario. Observa esta línea: Explica qué hace la instrucción y qué diferencia…
LiveCode permite definir propiedades personalizadas, es decir, propiedades creadas por el usuario. Observa esta línea:
set the cPuntos of button "Jugar" to 0
Explica qué hace la instrucción y qué diferencia hay entre una propiedad personalizada como cPuntos y una propiedad predefinida como width. Menciona una situación en la que sería útil guardar un dato así en un objeto.
Lázaro programa un juego de preguntas. Tiene un botón «Correcta» con este script: Un segundo botón, «Reiniciar», ejecuta set the cPuntos of this card to 0. La propiedad…
Lázaro programa un juego de preguntas. Tiene un botón «Correcta» con este script:
on mouseUp
set the cPuntos of this card to (the cPuntos of this card) + 10
put the cPuntos of this card into field "marcador"
end mouseUp
Un segundo botón, «Reiniciar», ejecuta set the cPuntos of this card to 0. La propiedad parte de 0.
-
Indica cuál es la propiedad personalizada y a qué objeto pertenece.
-
Da el valor de
cPuntosy lo que muestra el campo después de 3 clics en «Correcta». -
Di qué ocurre si luego se pulsa «Reiniciar» y qué muestra el campo en ese momento. Justifica tu respuesta.
Diseñar una interfaz completa
Para diseñar una aplicación sigue este orden: objetos → eventos → propiedades.
Guardar precio y stock como propiedades personalizadas tiene sentido porque son datos del producto que varios scripts necesitan leer y cambiar, y no deben perderse ni depender de lo que muestre un campo.
Se quiere una aplicación para controlar el inventario de una pequeña tienda. Debe mostrar el nombre de un producto, las unidades disponibles y permitir registrar una…
Se quiere una aplicación para controlar el inventario de una pequeña tienda. Debe mostrar el nombre de un producto, las unidades disponibles y permitir registrar una venta con un botón.
Diseña la interfaz indicando:
-
los objetos que usarías,
-
al menos dos eventos que programarías,
-
dos propiedades predefinidas que modificarías,
-
dos propiedades personalizadas que definirías, por ejemplo para el precio y el stock.
Justifica por qué conviene guardar esos datos como propiedades personalizadas de los objetos.
Resumen
-
Un objeto es una pieza del programa: pila, tarjeta, botón, campo. Se nombra como
button "Aceptar". -
Un evento es algo que ocurre y al que el objeto reacciona:
mouseDown,mouseUp,openCard,keyDown. -
Una propiedad es una característica del objeto:
visible,width,backgroundColor. Se cambia conset the propiedad of objeto to valor. -
Un script tiene la forma
on evento … end eventoy se escribe en el objeto que recibe el evento. -
Las propiedades personalizadas las crea el programador (
cPuntos,cStock) para guardar datos propios en un objeto.