
Visita la parte 1 aquí o la versión original aquí. De nuevo aquí otra vez, hoy escribiremos la parte más complicada, código (Lua).
Código – Programando
Para empezar necesitaremos cualquier editor de texto, yo usaré TextEdit que viene por defecto en Mac (es como el bloc de notas pero en Mac).
Empezamos con el fondo, en nuestro editor de texto pegamos en el primer párrafo el siguiente código:
local background = display.newImage("background.png")
En la línea “background.png” es el nombre del fondo de la API, por tanto el fondo deberá estar en la misma carpeta que la API y debe llamarse background.png
Manecillas del Reloj: Para ello necesitarás las 4 manecillas (las puedes hacer tu mismo) y este código:
local hourHand = display.newImage("hourHand.png", 152, 185)
local minuteHand = display.newImage("minuteHand.png", 152, 158)
local center = display.newImage("center.png", 150, 230)
local secondHand = display.newImage("secondHand.png", 160, 155)
Y sus valores son los siguientes:
- hourHand: Manecilla de la hora
- minuteHand: Manecilla del minuto
- center: Punto centro del reloj (donde se juntarán todas las manecillas)
- secondHand: Manecilla de los segundos
Nota: El nombre de la imagen y sus dimensiones está dentro del paréntesis del código.
Punto de referencia: Para colocar las imágenes correctamente, debemos modificar el punto de referencia para así poder mover las imágenes relativamente a la parte central:
hourHand:setReferencePoint(display.BottomCenterReferencePoint)
minuteHand:setReferencePoint(display.BottomCenterReferencePoint)
secondHand:setReferencePoint(display.BottomCenterReferencePoint)
Posición inicial: Estableceremos la posición inicial de las manecillas (sí lo hicimos, pero esta vez será para ajustar el reloj a nuestra zona horaria)
local timeTable = os.date("*t") --Returns a table containing the hour, minutes and seconds at the call moment
--Set the rotation according to the timeTable values
hourHand.rotation = timeTable.hour * 30 + (timeTable.min * 0.5) --The hours are separated by 30 degrees, plus 0.5 degrees per minute
minuteHand.rotation = timeTable.min * 6 --6 degrees separates the minutes and seconds
secondHand.rotation = timeTable.sec * 6
Uso de memoria: La variable de calendario sólo se usa una sola vez al inicio de la aplicación, lo que no hay necesidad de mantenerla en la memoria. Para liberar la memoria utilizada por la variable (que es casi nada) que establezca su valor a nulo (nil)
timeTable = nil
Movimiento de las manecillas (moveHands): Las siguientes líneas de código manejarán la rotación de las manecillas del reloj, es el mismo código que antes, sólo que esta vez envuelto en una función que se ejecutará cada segundo por un temporizador:
local function moveHands(e)
local timeTable = os.date("*t") --get time again, every second
hourHand.rotation = timeTable.hour * 30 + (timeTable.min * 0.5)
minuteHand.rotation = timeTable.min * 6
secondHand.rotation = timeTable.sec * 6
end --the local variable is destroyed here
Temporizador: El temporizador, se ejecuta cada segundo y realiza la función especificada, esta es la moveHands función que hemos creado en el último paso. Los tiempos que se ejecuta son establecidos por el tercer parámetro, 0 es infinito
timer.performWithDelay(1000, moveHands, 0)
Esto terminará nuestra aplicación. Guardamos el archivo como Main.lua en su carpeta de proyecto. Creo que está bien por hoy, si habéis seguido los tutoriales ya tendréis la aplicación hecha. En el siguiente (último) la pondremos en marcha, es decir, la simularemos. ¡Espera, no te vallas! Que puedes descargar los archivos aquí mismo!
Archivos del proyecto || Descarga (vía Mobile Tuts+)