Snelle tip een framesnelheidsteller maken in ActionScript 3.0

In deze snelle tip leert u hoe u de huidige framesnelheid van uw Flash-toepassing kunt meten met ActionScript 3 en de FPS op het scherm kunt weergeven.


Het belang van beeldsnelheid

Framesnelheid of Frames per seconde (fps) is de frequentie waarmee een beeldapparaat unieke opeenvolgende beelden, frames genaamd, produceert. De term is evengoed van toepassing op computergraphics, videocamera's, filmcamera's en motion capture-systemen.

Elk frame is een stilstaand beeld; snel achter elkaar weergeven van frames creëert de illusie van beweging. Hoe meer frames per seconde (fps), hoe vloeiender de beweging wordt weergegeven.

Door de fps te meten, kunt u de prestaties van uw film of toepassing controleren en indien nodig optimalisaties uitvoeren.

Dit kan erg handig zijn bij het testen van een toepassing die in verschillende omgevingen wordt uitgevoerd, de internetbrowser, de desktop, televisieboradcast of een mobiel apparaat.

Met een beetje hulp van ActionScript 3 berekenen we de framesnelheid met de methode getTimer () en maken we een TextField om de resultaten, in realtime, in het werkgebied weer te geven.


Stap 1: Maak een nieuw bestand

Open Flash en maak een nieuw Flash-bestand (ActionScript 3).


Stap 2: Open het actiescherm

Druk op Option / Alt + F9 of ga naar Venster> Acties om het deelvenster Acties te openen.


Stap 3: Variabelen

We zullen drie variabelen gebruiken, zoals uitgelegd in de opmerkingen:

var startTime: Number; // Gebruik om de relatieve tijd te berekenen var frames Number: Number = 0; // Huidig ​​aantal fps var fps: TextField = new TextField (); // Een tekstveld om de feitelijke fps weer te geven

Stap 4: Hoofdfunctie

Dit is de belangrijkste functie van onze teller:

 function fpsCounter (): void startTime = getTimer (); // Krijgt de tijd in milliseconden sinds de film addChild (fps) startte; // Voegt het TextField toe aan de fase addEventListener (Event.ENTER_FRAME, checkFPS); // Voegt een EnterFrame-luisteraar toe en voert de checkFPS-functie uit

Stap 5: Selecteer Frame invoeren

Deze functie berekent de fps bij invoerframe:

 function checkFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; // Krijgt de tijd in seconden sinds de functie framesNummer ++ wordt uitgevoerd; // Advertenties één naar de frameteller if (currentTime> 1) // Als de tijd in seconden groter is dan 1 fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10.0) /10.0 ); // Berekent de framesnelheid en geeft deze weer in het tekstveld startTime = getTimer (); // Reset de starttijd frames Number = 0; // Stel het aantal frames opnieuw in

Stap 6: Roep de functie aan

Gebruik deze enkele regel code om de hoofdfunctie te starten:

fpsCounter ();

Stap 7: volledige code

De volledige code zou er als volgt uit moeten zien:

var startTime: Number; var frames Number: 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 ();

Stap 8: Document Class-versie

Misschien gebruikt u liever een documentklasse dan tijdlijncode? In het volgende fragment wordt gedemonstreerd hoe u dit aanpakt. Lees deze Snelle tip als u niet zeker weet hoe u een documentklasse moet benaderen.

 pakket import flash.display.MovieClip; import flash.text.TextField; import flash.events.Event; import flash.utils.getTimer; public class FPSDemo breidt MovieClip uit public var startTime: Number; public var frames Number: Number = 0; public var fps: TextField = new TextField (); publieke functie FPSDemo () fpsCounter ();  openbare functie fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS);  openbare functie 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; 

U kunt deze klasse gebruiken om een ​​FPS-teller in elk project op te nemen, zoals:

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

Kopieer het allemaal naar een nieuw AS-bestand en sla het op als "FPSDemo.as", dan kun je het gebruiken wanneer je maar wilt.

Conclusie

Dit is een eenvoudig voorbeeld van hoe u een framesnelheidsteller kunt gebruiken. Probeer het, experimenteer en gebruik het in uw eigen projecten.

Bedankt voor het lezen!