Reloj binario.

a un año de estar de regreso en casita, trabajando para Schematic, con la bendición de tener ya una casita propia, junto con mi adorada ale
Schematic recientemente lanzó una nueva versión del sit, una versión de transición, si se quiere, ya que actualmente se está cocinando otra versión mejorada, en esta actual estamos afinando los detalles y por fin veremos a nuestra querida oficina de Costa Rica mencionada.
En el Plano laboral hemos estado trabajando en nuevos proyectos para los cuales utilizamos el FlexBuilder, lo que nos lleva al tema (por fin algo de código).
Hace tiempo ya, había visto este reloj y siempre había echo versiones de este en flash, pero los archivos se perdián en el vortex de mis archivos de pruebas o en discos duros de mis pcs anteriores. es por eso que ahora comparto el código antes de que se me vuelva a perder.

Reloj binario

el reloj binario se basa en luces, cada luz representa en este caso un valor numérico, luces encendidas indican que el número final se obtiene sumando el valor de estas. los valores de estas luces van en potencia de dos (2^0, 2^1, 2^4, 2^3) para los valores 1, 2, 4, 8, respectivamente es decir que para el número uno el valor binario sería de 0001, lo cual sería indicado por la primer luz (de abajo hacia arriba) encendida, en el caso del cinco el valor sería 0101 (1 + 4 encendidas). hay varias formas de obtener el valor binario de estos números, uno es mediante un while utlizando módulo(%), restando el valor... agregando un 1 cuando el residuo se múltiplo de dos y repitiendo el proceso en tanto el número sea mayor que uno. en fin, mucha cosa para un reloj que ya deporsí es difícil de leer. afortunada mente flash provee herramientas para nuestas vagabunderías, en este caso si pasamos un número a cadena utilizando un dos como argumento de la conversión, flash muy amablemente nos regresa el valor binario de este número. [code] var n:Number = 5; trace(n.toString(2));//101 [/code] lo cuál nos facilita aún más las cosas.

componentes

el "proyecto" se compone de 3 archivos. Light.mxml, Digit.mxml, y binaryClock.mxml Light este amigo se encarga de dibjujar las luces, una apagada y otra encendida, los valores de los colores están puestos en variables estáticas, los cuales pueden ser cambiados fácilmente. la function updateState básicamente pone un clip visible y el otro invisible dependiendo del valor del argumento (true encendido, false apagado) Digit digit es la columna que contiene luces (las crea dentro un un box vertical), este recibe/acepata como argumento la cantidad de luces a mostrar, es decir para el primer dígito de las horas el valor máximo a mostrar es 2 (de venti-tantas horas), para lo cual no tiene sentido ponerle más de dos luces. este componente recibe un número y actualiza las luces para reflejar este valor, la parte curiosa es que los clips son puestos de arriba hacia abajo, pero ocupamos setearlos de abajo hacia arriba. DigitalClock el reloj en si, tiene un timer que se ejecuta cada segundo, cada vez que esto ocurre, toma las horas, minutos y segundos y actualiza el display pasándole el dígito a cada clip (Digit que contiene las luces), y este se encarga de prender y apagar las luces.

cosas rescatables

fuera de jugar un rato, se hace uso de Timer de flash9, addChild, graphics.fill, filtro glow, RadialGradient, GradientEntry, Sprite entre otros.

cosas no.rescatables

en cuanto uses algún componente en flex, ya estás condenado, el mxml principal, pesa 3kb, y los componentes 1kb cada uno, dando como resultado un producto compilado de 107kb (madre de dios!) bueno no todo es malo, luego veremos cosas buenas (pero igual de pesadas)

producto final

You need to upgrade your Flash Player This is replaced by the Flash content. Place your alternate content here and users without the Flash plugin or with Javascript turned off will see this. Content here allows you to leave out noscript tags. Include a link to bypass the detection if you wish.

mr.Zip

el zip lo pueden bajar de acá

-mmm, y el código???
-en el zip!!!

4 Comments

AML said:

Buena aplicación Kada... siempre quise ver que tal el Flex, pero por una u otra cosa nunca empecé.
Me alegro de que hayas empezado a postear de nuevo en tu blog... Ah, y tu libro de Flash, php y mysql, es de lo mejor.
Saludos.

vladimir said:

Kada hola, para avisarte q el link esta roto, puedes revisarlo por favor

kada said:

gracias por los commets aml, vladimir, ya arreglé la liga.

saludos
c.z.

GMAIL said:

NO ENTIENDO COMO FUNKA, SORRY PERO ES QUE SOY MUY DURA, ME LO PODRIAS EXPLICAR MAS DESPACIO, Y SI PUEDES ENVIAR EL LINK PARA PONERLO EN MI BLOG, PERO LO HARE SOLO DESPUES QUE LO ENTIENDA, GRACAIAS