In questo suggerimento rapido imparerai come misurare la frequenza dei fotogrammi corrente della tua applicazione Flash usando ActionScript 3 e visualizzare gli FPS sullo schermo.
Frame Rate, o Frame per Second (fps), è la frequenza con cui un dispositivo di imaging produce immagini consecutive uniche chiamate frame. Il termine si applica ugualmente bene a computer grafica, videocamere, telecamere a pellicola e sistemi di motion capture.
Ogni fotogramma è un'immagine fissa; la visualizzazione di fotogrammi in rapida successione crea l'illusione del movimento. Più fotogrammi al secondo (fps), più liscia appare il movimento.
Misurare il fps ti permetterà di controllare le prestazioni del tuo film o della tua applicazione e di fare delle ottimizzazioni se necessario.
Questo può essere molto utile durante il test di un'applicazione che verrà eseguita in ambienti diversi, il browser Internet, il desktop, la televisione boradcast o un dispositivo mobile.
Con un piccolo aiuto da ActionScript 3, calcoleremo la frequenza fotogrammi usando il metodo getTimer () e creeremo un TextField per visualizzare i risultati, in tempo reale, nello stage.
Apri Flash e crea un nuovo file Flash (ActionScript 3).
Premi Opzione / Alt + F9 o vai a Finestra> Azioni per aprire il pannello Azioni.
Useremo tre variabili, come spiegato nei commenti:
var startTime: Number; // Utilizzare per calcolare il tempo relativo var framesNumber: Number = 0; // Numero corrente di fps var fps: TextField = new TextField (); // A TextField per visualizzare i fps effettivi
Questa è la funzione principale del nostro contatore:
function fpsCounter (): void startTime = getTimer (); // Ottiene il tempo in millisecondi dall'avvio del film addChild (fps); // Aggiunge il campo di testo allo stage addEventListener (Event.ENTER_FRAME, checkFPS); // Aggiunge un listener EnterFrame ed esegue la funzione checkFPS
Questa funzione calcola il fps al frame di invio:
function checkFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; // Ottiene il tempo in secondi da quando la funzione viene eseguita framesNumber ++; // Inserisce uno al frame counter se (currentTime> 1) // Se il tempo in secondi è maggiore di 1 fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10.0) /10.0 ); // Calcola la frequenza dei fotogrammi e la visualizza nel campo di testo startTime = getTimer (); // Reimposta l'ora di inizio framesNumber = 0; // Ripristina il numero di frame
Usa questa singola riga di codice per avviare la funzione principale:
fpsCounter ();
Il codice completo dovrebbe assomigliare a questo:
var startTime: Number; var framesNumber: Number = 0; var fps: TextField = new TextField (); function fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS); function 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 ();
Forse preferisci usare una classe di documento piuttosto che un codice di timeline? Il seguente frammento mostra come procedere. Leggi questo suggerimento se non sei sicuro di come affrontare una classe di documenti.
package import flash.display.MovieClip; import flash.text.TextField; import flash.events.Event; import flash.utils.getTimer; public class FPSDemo estende MovieClip public var startTime: Number; public var framesNumber: Number = 0; public var fps: TextField = new TextField (); funzione pubblica FPSDemo () fpsCounter (); public function fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS); public function 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;
È possibile utilizzare questa classe per incorporare un contatore FPS all'interno di qualsiasi progetto in questo modo:
var fpsDemo: FPSDemo = new FPSDemo (); addChild (fpsDemo);
Basta copiare tutto in un nuovo file AS e salvarlo come "FPSDemo.as", quindi puoi usarlo quando vuoi.
Questo è un esempio di base di come è possibile utilizzare una funzione di frame rate counter. Fai un tentativo, sperimentalo e usalo nei tuoi progetti.
Grazie per aver letto!