Sugerencia rápida cómo crear un contador de velocidad de fotogramas en ActionScript 3.0

En este Consejo rápido, aprenderá cómo medir la velocidad de fotogramas actual de su aplicación Flash con ActionScript 3 y visualizar los FPS en la pantalla..


La importancia de la velocidad de fotogramas

La velocidad de cuadros, o cuadros por segundo (fps), es la frecuencia con la que un dispositivo de imágenes produce imágenes consecutivas únicas llamadas cuadros. El término se aplica igualmente a gráficos de computadora, cámaras de video, cámaras de película y sistemas de captura de movimiento.

Cada cuadro es una imagen fija; La visualización de fotogramas en rápida sucesión crea la ilusión de movimiento. Cuantos más cuadros por segundo (fps), más suave aparecerá el movimiento.

La medición de los fps le permitirá verificar el rendimiento de su película o aplicación y realizar optimizaciones si es necesario.

Esto puede ser muy útil al probar una aplicación que se ejecutará en diferentes entornos, el navegador de Internet, el escritorio, la televisión o un dispositivo móvil..

Con un poco de ayuda de ActionScript 3, calcularemos la velocidad de cuadros usando el método getTimer () y crearemos un TextField para mostrar los resultados, en tiempo real, en el escenario..


Paso 1: Crear un nuevo archivo

Abra Flash y cree un nuevo archivo Flash (ActionScript 3).


Paso 2: Abrir el Panel de Acciones

Presione Opción / Alt + F9, o vaya a Ventana> Acciones para abrir el Panel de acciones.


Paso 3: Variables

Usaremos tres variables, como se explica en los comentarios:

var startTime: Number; // Se usa para calcular el tiempo relativo var framesNumber: Number = 0; // Número actual de fps var fps: TextField = new TextField (); // Un campo de texto para mostrar los fps reales

Paso 4: Función principal

Esta es la función principal de nuestro contador:

 function fpsCounter (): void startTime = getTimer (); // Obtiene el tiempo en milisegundos desde que comenzó la película addChild (fps); // Agrega TextField a la etapa addEventListener (Event.ENTER_FRAME, checkFPS); // Agrega un escucha EnterFrame y ejecuta la función checkFPS

Paso 5: Compruebe en Entrar marco

Esta función calcula los fps en el cuadro de entrada:

 función checkFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; // Obtiene el tiempo en segundos desde que se ejecuta la función framesNumber ++; // Agrega uno al contador de cuadros si (currentTime> 1) // Si el tiempo en segundos es mayor que 1 fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10.0) /10.0 ); // Calcula la velocidad de fotogramas y la muestra en el campo de texto startTime = getTimer (); // Restablecer el tiempo de inicio framesNumber = 0; // Restablecer el número de cuadros

Paso 6: llamar a la función

Utilice esta única línea de código para iniciar la función principal:

fpsCounter ();

Paso 7: Código Completo

El código completo debería verse así:

var startTime: Number; var framesNumber: Number = 0; var fps: TextField = new TextField (); function fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS);  función checkFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; framesNumber ++; if (currentTime> 1) fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10.0) /10.0)); startTime = getTimer (); framesNumber = 0;  fpsCounter ();

Paso 8: Versión de la clase de documento

Tal vez prefiera usar una clase de documento que un código de línea de tiempo? El siguiente fragmento de código muestra cómo hacerlo. Lea este Consejo rápido si no está seguro de cómo abordar una clase de documento.

 paquete import flash.display.MovieClip; importar flash.text.TextField; import flash.events.Event; import flash.utils.getTimer; la clase pública FPSDemo extiende MovieClip public var startTime: Number; public var framesNumber: Number = 0; public var fps: TextField = new TextField (); función pública FPSDemo () fpsCounter ();  función pública fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS);  función pública checkFPS (e: Evento): void var currentTime: Number = (getTimer () - startTime) / 1000; framesNumber ++; if (currentTime> 1) fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10.0) /10.0)); startTime = getTimer (); framesNumber = 0; 

Podría usar esta clase para incrustar un contador de FPS dentro de cualquier proyecto, de esta manera:

 var fpsDemo: FPSDemo = new FPSDemo (); addChild (fpsDemo);

Solo cópielo en un nuevo archivo AS y guárdelo como "FPSDemo.as", luego puede usarlo cuando lo desee.

Conclusión

Este es un ejemplo básico de cómo puede usar una función de contador de velocidad de cuadros. Pruébalo, pruébalo y úsalo en tus propios proyectos..

Gracias por leer!