Mostrar datos con medidores de agujas animados Funky

Crear una visualización de datos atractiva siempre ha sido una de las características clave de Flash. Te permite lograr resultados de caramelos con datos dinámicos reales; Ya sea en un precargador, un juego o una presentación de oficina.

Este sencillo tutorial le mostrará cómo construir un medidor de calibre de aguja. Aprenderá cómo aplicar un efecto de "brillo", comunicarse con XML y aplicar un motor de interpolación a las rotaciones.




Paso 1: Configuración de la carpeta

Cree tres archivos: gauge.fla, gauge.xml y Main.as.

Paso 2: Estructura XML

Abra gauge.xml. Este archivo contendrá los datos que llenan los medidores; Edítalos como quieras en base a la siguiente estructura:

    64 Masculino   26 Hembra  

El valor es un porcentaje y, por lo tanto, debe estar entre 0 y 100. La descripción se mostrará en el indicador correspondiente.

Paso 3: Configuración del escenario

Abra gauge.fla y cambie la configuración como se muestra a continuación.

Paso 4: Crea el clip de película de Gauge

Crea un nuevo símbolo, nómbralo gauge_mc y establecer la clase en Calibre.

Paso 5: Configuración de fondo

A continuación, crea un círculo como se muestra a continuación:

Esto formará el interior del medidor, así que nombre a esta capa "fondo".

Paso 6: Agregar un trazo circundante

Agregue un trazo utilizando la herramienta de botella de tinta (método abreviado: S) con la siguiente configuración:

(Haga clic en el círculo de fondo para aplicar el trazo).

Paso 7: Crear un marco con efectos de degradado

Cambie a la herramienta Selección, haga clic en el trazo para seleccionarlo y presione Modificar> Forma> Convertir líneas a rellenos. Ahora, copie el relleno y péguelo en una nueva capa, creada sobre la capa existente, llamada "marco". Agrega dos nuevos trazos de degradado, cada uno de un píxel de espesor. Uno va en el interior del marco, el otro va en el exterior.

Paso 8: Dibuja el Pin

Cree una nueva capa, llámela "alfiler de aguja" y en el centro haga un pequeño círculo gris con un contorno negro y grueso:

Paso 9: dibujar la aguja

Cree una nueva capa debajo de los pines y llámela "aguja". Dibuja una línea, convierte la línea en un relleno y convierte este relleno en un símbolo (llamado needle_mc).

Debe mover tanto el punto de registro como el punto de rotación de este nuevo símbolo al centro de la parte inferior de la línea. Para mover el punto de registro, haga doble clic en la aguja para editar, luego arrastre el relleno hasta que el punto de registro esté en el lugar correcto. Para mover el punto de rotación, vuelva a editar el símbolo gauge_mc, luego use la herramienta Transformación libre (atajo: Q) para hacer doble clic en el círculo pequeño. Esto lo ajustará al punto de registro de la aguja..

Paso 10: dibujar el anillo del marcador

Crea una nueva capa debajo de los "marcadores" de la aguja. Dibuje un círculo, más pequeño que el marco, con un trazo negro grueso y sin relleno.

Paso 11: Crea una estrella

En otra capa nueva, seleccione la herramienta PolyStar y úsela para crear una estrella de diez lados, centrada en la aguja. Usaremos esto para crear los pequeños marcadores alrededor del anillo.

Paso 12: conecta los puntos de la estrella al centro

En la capa de marcadores, dibuje líneas finas desde la aguja hasta cada punto de la estrella. De esta manera, sabes que están espaciados uniformemente..

Paso 13: Crea un círculo interno para recortar

Cree un círculo incluso más pequeño que el anillo marcador, luego seleccione las líneas dentro de este círculo y presione eliminar para borrarlas todas.

Paso 14: Otros cultivos

Borre el círculo interior, los marcadores externos y la sección inferior del anillo marcador, como se resalta a continuación:

Paso 15: Etiquetar los marcadores

Etiqueta los marcadores: el primero como 0, el medio como 50 y el último como 100.

Paso 16: Realiza los efectos vidriosos y brillantes

Cree una nueva capa encima de todas las demás llamadas "vidrio" y otra encima de la que se llama "brillo".

En la capa de vidrio, dibuje un círculo blanco del tamaño del fondo. Hacer clic Ventana> Color y dale un relleno de degradado radial, donde ambos colores son blancos pero uno tiene un 20% de alfa y el otro tiene un 5% de alfa.

En la capa de brillo, cree dos círculos blancos con alfas degradados que van del 70% al 30%. Use la herramienta Selección para exprimir sus formas a las que se muestran a continuación:

Paso 17: Agregar una etiqueta de descripción

Cree otra capa nueva llamada "etiqueta" y agregue un campo de texto con "label_txt" como su nombre de instancia. No olvides incrustar la fuente.!

Paso 18: Agregar una etiqueta de valor

Agregue una nueva capa llamada "valor" y agregue un campo de texto con "value_txt" como su nombre de instancia. Una vez más, no se olvide de incrustar las fuentes. Estoy usando una fuente llamada LCDDot, que puedes encontrar en el archivo zip.

Paso 19: Corrigiendo el Punto de Rotación de la Aguja

En este momento, la aguja apunta a la marca del 50%. Necesitamos que apunte al 0% cuando comience, así que haga doble clic en "needle_mc", seleccione el relleno y gírelo a -143º. Esto nos dará la compensación que necesitamos..

Paso 20: Establecer la clase de documento

Asegúrese de que no haya nada seleccionado, luego en el panel Propiedades, escriba Principal en el cuadro Clase para establecer Main.as como su clase de documento. Ahora ábrelo.

Paso 21: Importar clases

Usaremos el motor de interpolación de GreenSock, TweenMax. Puede descargarlo aquí: http://blog.greensock.com/tweenmax/

Importar las clases necesarias para Main.as:

 paquete import flash.display.MovieClip; import flash.events.Event; importar flash.net.URLLoader; importar flash.net.URLRequest; import com.greensock.TweenMax; import com.greensock.events.TweenEvent; 

Paso 22: Escribe el constructor principal

Este código debe ir después de "import com.greensock.events.TweenEvent;" pero antes del último "". La función Main () será la primera función ejecutada cuando se cargue el SWF.

 public class Main extiende MovieClip private var xmlLoader: URLLoader; // esto cargará el xml privado var xml: XML; // esto contendrá los datos xml cargados por xmlLoader private var gauges: Array; // esto almacenará la función pública de indicadores creada Main () gauges = new Array (); // inicia el array xmlLoader = new URLLoader (); // inicia el cargador xmlLoader.addEventListener (Event.COMPLETE, updateGauges) // cuando se carga XML, actualiza los indicadores xmlLoader.load (new URLRequest ("gauge.xml")); // inicia la carga del archivo XML

Paso 23: Haz que el indicador se mueva

Ponga este código antes de los dos últimos "" en su archivo. Esta función se ejecutará cuando el XML se haya cargado.

 función privada updateGauges (e: Event): void // llena el xml con los datos recibidos xml = new XML (e.target.data); // itera a través de los indicadores dentro de la estructura xml var ln: int = xml.gauge.length (); //número de s dentro del archivo XML var i: int = 0 while (i < ln)  gauges[i] = new Gauge(); //creates a new Gauge and puts it in the gauges[] array gauges[i].label_txt.text = xml.gauge[i].description[0].toUpperCase(); //adds the description to the label of the i-th gauge based on the XML's i-th  indicadores [i] .value_txt.text = "0%" // inicia el valor del indicador de indicadores // anima la rotación del indicador (286 es la rotación máxima de la aguja que construimos) var tm: TweenMax = nuevo TweenMax (indicadores [i] .needle_mc, 2, rotation: Math.round (xml.gauge [i] .value [0] * 286/100)); // este evento se activa cuando cambia el valor de la interpolación; hacemos esto para actualizar el valor del texto de acuerdo con la posición de la aguja tm.addEventListener (TweenEvent.UPDATE, onTween) // y medidores de posicionamiento [i] .y = 45 // x posicionamiento (220 píxeles de distancia entre ellos y 50 píxeles de desplazamiento) desde los indicadores de margen izquierdo [i] .x = (i * 220) + 50 // se agrega a la etapa addChild (indicadores [i]); // aumenta i para la siguiente iteración i ++

Paso 24: Haz que los números cambien

De nuevo, inserte esto antes de los dos últimos "" en su código. Esta función se ejecuta repetidamente a medida que la aguja se interpone (gira).

 función privada onTween (e: Evento): void / * esto evitará un error de rotación conocido dentro de flash * donde, al girar, después de alcanzar 180º comienza a contar desde -180 * (es decir, de 0 a 180, -180). a 0). Al agregar 360 a la ecuación cuando la rotación es negativa * podemos asegurarnos de que el valor sea correcto. * * / if (e.target.target.rotation < 0)  e.target.target.parent.value_txt.text = (Math.round( (360+e.target.target.rotation) * 100 / 286) + "%"); else e.target.target.parent.value_txt.text = (Math.round( e.target.target.rotation * 100 / 286) + "%");  

Paso 25: Revisa el código completo

¿Confundido acerca de dónde debe ir cualquiera de los códigos? Mira aqui.

Paso 26: Finalizar

Ahora todo lo que necesita es regresar a gauge.fla y, en el primer cuadro, agregar un fondo y un título:

Conclusión

Como puedes ver, es más fácil de lo que parece. Tómese su tiempo y expanda el concepto: haga un precargador, un medidor de ancho de banda, lo que quiera. Espero que hayas disfrutado este tutorial, gracias por leerlo.!