MetaCard y Revolution: Herramientas de autor multiplataforma para multimedia | ||
---|---|---|
Anterior | Capítulo 5. Otros elementos | Siguiente |
Determinar las características de esta es cuestión de llamar a las funciones correspondientes. Algunas de estas se muestran en el ejemplo siguiente y necesitan pocos comentarios a la vista del nombre y del resultado. Vamos a ver un ejemplo sólo con las que suelo utilizar más a menudo y que son: screenRect (aunque lo interesante suele ser determinar el ancho y/o el alto de la pantalla), screenColors, screenDepth, screenLoc y screenType.
Para obtener la Figura 5-9 se ha hecho uso de una pila con una única tarjeta. El código utilizado se muestra a continuación y está asociado a la tarjeta, donde se aprovecha para enviar a un campo de texto algunas de las características que definen la pantalla del sistema donde se está ejecutando, esto se realiza cuando la ventana ya está visible (openCard) antes de que el usuario pueda realizar ninguna acción sobre la aplicación. El evento mouseUp es una costrumbre: siempre se te cuela algún detalle mientras creas la aplicación y así dispongo de una manera cómoda de generar el evento de que se ha de mostrar el contenido de la tarjeta sin necesidad de cerrarla y volverla a abrir.
# # En la tarjeta # on mouseUp send "openCard" to me end mouseUp on openCard put "screenRect:" && the screenRect & return &\ "Ancho de la pantalla:" && the third item of the screenRect & return &\ "Alto de la pantalla:" && the fourth item of the screenRect & return &\ "screenColors:" && the screenColors & return &\ "screenDepth:" && the screenDepth & return &\ "screenLoc:" && the screenLoc & return &\ "screenVendor:" && the screenVendor & return &\ "screenName:" && the screenName & return &\ "screenType (paleta de colores):" && the screenType \ into fld "eixida" end openCard
Claro que la parte más divertida de estas funciones es hacer que algo suceda en pantalla, como por ejemplo que:
La pila se puede centrar aprovechando el momento antes de pintar la ventana (preOpenCard) de la aplicación para situarla centrada en pantalla con
# # En la pila # on preOpenCard move me to the screenLoc end preOpenCard
Que rebote en las "paredes" (los límites) de la pantalla de una manera aleatoria, almacenando previamente los valores mínimo y máximo para cada coordenada y haciendo un bucle con una pequeña indeterminación ...
# # En la pila # local varX, varY on keyUp put (0 + round(the width of me/2)) &&\ ((the third item of the screenRect) - round(the width of me/2)) \ into varX put (0 + round(the height of me/2)) &&\ ((the fourth item of the screenRect) - round(the height of me)) \ into varY repeat with i = 1 to 10 move me to (any word of varX, any word of varY) in 800 milliseconds end repeat move me to the screenLoc in 250 milliseconds end keyUp
Importante: No olvide hacer el round. ¡Bueno, mejor no me crea y pruébelo!
Se pueden hacer capturas de lo que hay en pantalla (aunque lo trataremos más tarde con mayor detalle en el Capítulo 9), todo o una parte. Sólo pruébelo, a mi me ha hecho esto al añadir el import después del último move
# # En la pila # local varX, varY on keyUp ... move me to the screenLoc in 250 milliseconds import snapshot from rect 0,0,100,100 end keyUp