HTMLpointHTMLpoint HTMLpoint.com


 Get timer



La función Get Timer ofrece el tiempo transcurrido (en milésimas de segundo) desde el momento de la apertura de la película Flash:

Programando el valor de una variable con el valor de Get Timer el resultado sería éste:

(obviamente, al clic en "start" el tiempo no comienza de 0 porque, como queda dicho, Get Timer ofrece el valor en milésimas de segundo desde el momento de la apertura de la película Flash, prácticamente desde la apertura de la página web)

Para acceder al tiempo en segundos, y no en milésimas, es necesario introducir una pequeña expresión que permite transformar las milésimas en segundos:

Set Variable: "display" = Int(GetTimer / 1000)

donde display es el nombre del campo.
Esta expresión transforma en entero (para evitar que los segundos esten en decimales... ) el valor de Get Timer dividido por 1000 (milésimas en segundos).
He aquí el resultado:

Veamos entonces cómo construir un cronómetro similar al primer ejemplo que hemos mostrado.

Necesitamos 3 frame de un único nivel.
El primer frame se asigna a la declaración de algunas variables; el segundo para actualizar el campo de texto y el tercero para volver al precedente de manera que se repita continuamente la animación.

En un cronómetro los segundos llegan hasta 60 y después vuelven a empezar de 0, ¿no es verdad? Por desgracia, será necesario resolver este problema, ya que Flash cuenta los segundos en progresión, sin pararse (¿habéis notado que, pasados los 60, sigue aumentando el valor?).

Empecemos asignando el valor a display (nuestro campo de texto) igual a:

Set Variable: "display" = min & ":" & sec

min identifica los minutos transcurridos; sec, los segundos, y sendos valores se unen entre ellos utilizando también el carácter : (¿qué cronómetro sería si no?).
Ahora nuestra tarea será asignarle los valores a min y seg.

Puesto que seg tiene que volver a empezar de 0 una una vez que ha llegado a 60, no podemos asignarle directamente el valor de Int(GetTimer / 1000), por tanto tendremos que emplear otra variable x_seg para el resultado de esta expresión. De modo que tenemos x_seg que ofrece el valor del tiempo transcurrido en segundos.

¿Cada cuánto tiene que saltar de 1, min? Es obvio que despues de cada 60 segundos.
Podemos utilizar otra variable, x_min, con valor inicial de 60 , que permite efectuar el control en x_seg:

If (x_seg = x_min)
  Set Variable: "seg" = 0
  Set Variable: "min" = min + 1
  Set Variable: "x_min" = x_min + 60
End If

Se x_seg es igual a 60 (supongamos que haya alcanzado los primeros 60 segundos), entonces setta la variable seg igual a 0 (inmediatamente se pone a cero...), aumenta en 1 la variable min (otro minuto más) y aumenta también x_min en 60 (porque el siguiente control se tendrá que hacer entre 60+60 segundos, es decir 120... ¿entendido?). Esta condición se repetirá cada minuto del tiempo transcurrido.

Falta sólo settar la variable seg para cada segundo (hasta ahora se ha settado para cada minuto). He aquí la action:

Set Variable: "seg" = (x_seg - x_min) + 60

Esta action es muy personal...
En concreto, seg tiene que asumir un valor de 0 a 60 para cada minuto que transcurre. Resulta imposible si se asigna directamente el valor de Get Timer por la razón ya expuesta, y por eso he creado esta simple expresión...
Imaginemos que x_seg haya llegado a 124 segundos (o sea 2 minutos y 4 segundos), el resultado de esta expresión sería: (124 - 180) + 60 = 4 .
x_min tiene valor 180, porque, teniendo como valor inicial 60, y aumentando cada minuto de 60, llegados a 124 segundos (2 minutos) resulta igual a 180.
El +60 se ha incluido porque el valor de x_min es siempre mayor respecto a x_seg en 60. Se podría obviar añadiendo otra variable parecida a x_min, pero con valor inicial igual a 0 y no 60.

En definitiva, para evitar que los segundos por debajo del valor 10 aparezcan sin el 0 delante de la única cifra (1 en lugar de 01) metemos esta última action:

If (sec < 10)
  Set Variable: "seg" = "0" & seg
End If

Y he aquí la action en su totalidad:

Set Variable: "x_seg" = Int(GetTimer/1000)
Set Variable: "seg" = (x_seg - x_min) + 60
If (x_seg = x_min)
  Set Variable: "seg" = 0
  Set Variable: "min" = min + 1
  Set Variable: "x_min" = x_min + 60
End If
If (sec < 10)
  Set Variable: "seg" = "0" & seg
End If
Set Variable: "display" = min & ":" & seg

Falta sólo la programación inicial de las variables x_min y min respectivamente a 60 y a 0, que habrá que incluir en el primer frame de la animación; así, el juego está hecho.


  Torna a inizio pagina