Sfat rapid Cum se construiește un Counter Rate Frame în ActionScript 3.0

În acest sfat rapid veți învăța cum să măsurați rata actuală de cadre a aplicației dvs. Flash utilizând ActionScript 3 și afișați FPS pe ecran.


Importanța ratei cadrelor

Frame Rate sau Frames per Second (fps) este frecvența la care un dispozitiv de imagine produce imagini unice consecutive numite cadre. Termenul se aplică la fel de bine și pentru grafica computerizată, camere video, camere de film și sisteme de captare a mișcării.

Fiecare cadru este o imagine statică; afișarea cadrelor în succesiune rapidă creează iluzia mișcării. Cele mai multe cadre pe secundă (fps), cu cât mișcarea mai ușoară apare.

Măsurarea fps vă va permite să verificați performanța filmului sau a aplicației dvs. și să efectuați optimizări dacă este necesar.

Acest lucru poate fi foarte util atunci când se testează o aplicație care se va difuza în medii diferite, browserul de internet, desktopul, televiziunea sau un dispozitiv mobil.

Cu un pic de ajutor din ActionScript 3, vom calcula rata de cadre folosind metoda getTimer () și vom crea un TextField pentru a afișa rezultatele, în timp real, în Stage.


Pasul 1: Creați un fișier nou

Deschideți Flash și creați un fișier Flash nou (ActionScript 3).


Pasul 2: Panoul de acțiuni deschis

Apăsați Opțiuni / Alt + F9 sau mergeți la Fereastra> Acțiuni pentru a deschide Panoul de acțiuni.


Pasul 3: Variabile

Vom folosi trei variabile, după cum se explică în comentariile:

var startTime: Număr; // Utilizați pentru a calcula timpul relativ var framesNumber: Number = 0; // Numărul curent de fps var fps: TextField = new TextField (); // Un TextField pentru a afișa fps-ul real

Pasul 4: Funcția principală

Aceasta este principala funcție a contorului nostru:

 funcția fpsCounter (): void startTime = getTimer (); // Perioada în milisecunde de la începerea filmului addChild (fps); // adaugă TextField la stadiul addEventListener (Event.ENTER_FRAME, checkFPS); // Adaugă un ascultător EnterFrame și execută funcția checkFPS

Pasul 5: Verificați introducerea cadrului

Această funcție calculează fps-ul pe intrarea în cadru:

 funcția checkFPS (e: Eveniment): void var actualTime: Number = (getTimer () - startTime) / 1000; // Obține timpul în secunde de la executarea funcției framesNumber ++; // Anunțați unul la contorul de cadre dacă (curentTime> 1) // Dacă timpul în secunde este mai mare de 1 fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10.0) ); // Calculează rata de cadre și o afișează în câmpul text startTime = getTimer (); // Resetați intervalul de timp de startNumber = 0; // Resetați numărul de cadre

Pasul 6: Apelați funcția

Utilizați această singură linie de cod pentru a porni funcția principală:

fpsCounter ();

Pasul 7: Codul complet

Codul complet ar trebui să arate astfel:

var startTime: Număr; var framesNumber: Număr = 0; var fps: TextField = TextField nou (); funcția fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS);  funcția checkFPS (e: Event): void var actualTime: număr = (getTimer () - startTime) / 1000; framesNumber ++; dacă (actualTime> 1) fps.text = "FPS:" + (Math.floor ((numere / frazeNumber / curentTime) * 10.0) /10.0); startTime = getTimer (); framesNumber = 0;  fpsCounter ();

Pasul 8: Versiunea pentru clasa de documente

Poate că ați prefera să utilizați o clasă de documente decât codul temporal? Fragmentul următor demonstrează cum să procedați. Citiți acest sfat rapid dacă nu sunteți sigur cum să abordați o clasă de documente.

 pachet import flash.display.MovieClip; import flash.text.TextField; importul flash.events.Event; import flash.utils.getTimer; clasa publică FPSDemo extinde MovieClip public var startTime: Number; public var framesNumber: Număr = 0; public var fps: TextField = TextField nou (); funcția publică FPSDemo () fpsCounter ();  funcția publică fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS);  funcția publică funcția checkFPS (e: Event): void var actualTime: Number = (getTimer () - startTime) / 1000; framesNumber ++; dacă (actualTime> 1) fps.text = "FPS:" + (Math.floor ((numere / frazeNumber / curentTime) * 10.0) /10.0); startTime = getTimer (); framesNumber = 0; 

Ați putea folosi această clasă pentru a încorpora un contor FPS în orice proiect, cum ar fi:

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

Doar copiați toate într-un fișier AS nou și salvați-l ca "FPSDemo.as", atunci îl puteți folosi ori de câte ori vă place.

Concluzie

Acesta este un exemplu de bază în ceea ce privește modul în care puteți utiliza o funcție a contorului ratei cadrelor. Faceți o plimbare, experimentați-o și folosiți-o în propriile proiecte.

Vă mulțumim pentru lectură!

Cod