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.
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.
Åpne Flash og opprett en ny Flash-fil (ActionScript 3).
Trykk Alternativ / Alt + F9, eller gå til Vindu> Handlinger for å åpne handlingspanelet.
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
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
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
Bruk denne enkle koden for å starte hovedfunksjonen:
fpsCounter ();
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 ();
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.
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!