Hurtig Tips Hvordan bygge en takstteller i ActionScript 3.0

I denne Quick Tip lærer du hvordan du måler gjeldende bildefrekvens for Flash-programmet ditt ved hjelp av ActionScript 3, og viser FPS på skjermen.


Betydningen av rammeprisen

Rammefrekvens, eller Rammer per sekund (fps), er frekvensen der en bildebehandlingsenhet produserer unike påfølgende bilder som kalles rammer. Begrepet gjelder like godt for datagrafikk, videokameraer, filmkameraer og bevegelsessystemer.

Hver ramme er et stillbilde; å vise rammer i rask rekkefølge skaper en illusjon av bevegelse. Jo flere rammer per sekund (fps), jo jevnere bevegelsen vises.

Måling av fps vil gjøre det mulig å sjekke ytelsen til filmen eller applikasjonen og foreta optimaliseringer om nødvendig.

Dette kan være svært nyttig når du tester et program som vil kjøre i forskjellige miljøer, nettleseren, skrivebordet, tv-boradcast eller en mobil enhet.

Med litt hjelp fra ActionScript 3 beregner vi rammeprøven ved hjelp av metoden getTimer () og oppretter en TextField for å vise resultatene, i sanntid, i scenen.


Trinn 1: Opprett en ny fil

Åpne Flash og opprett en ny Flash-fil (ActionScript 3).


Trinn 2: Åpne handlinger Panel

Trykk Alternativ / Alt + F9, eller gå til Vindu> Handlinger for å åpne handlingspanelet.


Trinn 3: Variabler

Vi bruker tre variabler, som forklart i kommentarene:

var starttid: tall; // Bruk til å beregne relativ tid var framesNumber: Number = 0; // Nåværende antall fps var fps: TextField = nytt TextField (); // En TextField for å vise de faktiske fps

Trinn 4: Hovedfunksjon

Dette er hovedfunksjonen til telleren vår:

 funksjon fpsCounter (): void startTime = getTimer (); // Gets tiden i millisekunder siden filmen startet addChild (fps); // Legger til TextField til scenen addEventListener (Event.ENTER_FRAME, checkFPS); // Legger til en EnterFrame-lytter og utfører checkFPS-funksjonen

Trinn 5: Sjekk på Skriv inn ramme

Denne funksjonen beregner fps på enter frame:

 funksjonskontrollFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; // Gets tiden i sekunder siden funksjonen utføres framesNumber ++; // Annonser en til rammetelleren hvis (currentTime> 1) // Hvis tiden i sekunder er større enn 1 fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10,0) /10,0 ); // Beregner bildesatsen og viser den i tekstfeltet startTime = getTimer (); // Tilbakestill starttidsrammerNumber = 0; // Tilbakestill antall rammer

Trinn 6: Ring funksjonen

Bruk denne enkle koden for å starte hovedfunksjonen:

fpsCounter ();

Trinn 7: Full kode

Den fulle koden skal se slik ut:

var starttid: tall; var framesNumber: Number = 0; var fps: TextField = nytt TextField (); funksjon fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS);  funksjonskontrollFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; framesNumber ++; hvis (currentTime> 1) fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10,0) / 10,0); startTime = getTimer (); framesNumber = 0;  fpsCounter ();

Trinn 8: Dokumentklasseversjon

Kanskje vil du helst bruke en dokumentklasse enn tidslinjekode? Følgende utdrag viser hvordan du skal gå om det. Les denne Quick Tip hvis du ikke er sikker på hvordan du nærmer deg en dokumentklasse.

 pakke import flash.display.MovieClip; importer flash.text.TextField; importere flash.events.Event; importer flash.utils.getTimer; offentlig klasse FPSDemo utvider MovieClip public var startTime: Number; offentlige varammerNummer: Nummer = 0; public var fps: TextField = nytt TextField (); offentlig funksjon FPSDemo () fpsCounter ();  offentlig funksjon fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS);  offentlig funksjon checkFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; framesNumber ++; hvis (currentTime> 1) fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10,0) / 10,0); startTime = getTimer (); framesNumber = 0; 

Du kan bruke denne klassen til å legge inn en FPS-teller inne i et hvilket som helst prosjekt:

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

Bare kopier alt til en ny AS-fil og lagre den som "FPSDemo.as", så kan du bruke den når du vil.

Konklusjon

Dette er et grunnleggende eksempel på hvordan du kan bruke en rammefrekvens-teller-funksjon. Ta en tur, eksperiment og bruk den i dine egne prosjekter.

Takk for at du leste!