I denna Snabba Tips läser du hur du mäter den aktuella bildhastigheten för din Flash-applikation med ActionScript 3 och visar FPS på skärmen.
Ramhastighet, eller ramar per sekund (fps), är frekvensen vid vilken en bildanordning producerar unika konsekutiva bilder som kallas ramar. Termen gäller lika bra för datorgrafik, videokameror, filmkameror och rörelseinspelningssystem.
Varje ram är en stillbild; Att visa ramar i snabb följd skapar rörelsens illusion. Ju fler bilder per sekund (fps), ju mjukare rörelsen visas.
Genom att mäta fps kan du kontrollera resultatet av din film eller applikation och göra optimeringar om det behövs.
Detta kan vara mycket användbart när du testar en applikation som körs i olika miljöer, webbläsaren, skrivbordet, tv-boradcast eller en mobil enhet.
Med lite hjälp från ActionScript 3 beräknar vi bildhastigheten med metoden getTimer () och skapar en TextField för att visa resultaten, i realtid, i scenen.
Öppna Flash och skapa en ny Flash-fil (ActionScript 3).
Tryck på Alternativ / Alt + F9, eller gå till Fönster> Åtgärder för att öppna åtgärdspanelen.
Vi använder tre variabler, som förklaras i kommentarerna:
var starttid: nummer; // Använda för att beräkna relativ tid var framesNumber: Number = 0; // Nuvarande antal fps var fps: TextField = nytt TextField (); // En TextField för att visa de faktiska fps
Detta är huvudfunktionen hos vår räknare:
funktion fpsCounter (): void startTime = getTimer (); // Gets tiden i millisekunder sedan filmen startade addChild (fps); // lägger TextField till scenen addEventListener (Event.ENTER_FRAME, checkFPS); // lägger till en EnterFrame-lyssnare och kör checkFPS-funktionen
Denna funktion beräknar fps på enter frame:
funktionskontrollFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; // Gets tiden i sekunder eftersom funktionen exekveras framesNumber ++; // Annonsera en till ramräknaren om (currentTime> 1) // Om tiden i sekunder är större än 1 fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10,0) /10,0 ); // Beräknar bildhastigheten och visar den i textfältet startTime = getTimer (); // Återställ starttiden framesNumber = 0; // Återställ antal ramar
Använd den här enkla koden för att starta huvudfunktionen:
fpsCounter ();
Den fullständiga koden ska se ut så här:
var starttid: nummer; var framesNumber: Number = 0; var fps: TextField = nytt TextField (); funktion fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS); funktion checkFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; framesNumber ++; om (currentTime> 1) fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10,0) /10,0); startTime = getTimer (); framesNumber = 0; fpsCounter ();
Kanske skulle du hellre använda en dokument klass än tidslinjekod? Följande utdrag visar hur man går till det. Läs den här snabba tipsen om du inte är säker på hur du närma dig en dokumentklass.
paket import flash.display.MovieClip; importera flash.text.TextField; importera flash.events.Event; importera flash.utils.getTimer; offentlig klass FPSDemo utökar MovieClip public var startTime: Number; public var framesNumber: Number = 0; public var fps: TextField = nytt TextField (); allmän funktion FPSDemo () fpsCounter (); offentlig funktion fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS); offentlig funktion checkFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; framesNumber ++; om (currentTime> 1) fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10,0) /10,0); startTime = getTimer (); framesNumber = 0;
Du kan använda den här klassen för att bädda in en FPS-räknare inom något projekt som så:
var fpsDemo: FPSDemo = ny FPSDemo (); addChild (fpsDemo);
Kopiera bara allt till en ny AS-fil och spara den som "FPSDemo.as", då kan du använda den när du vill.
Detta är ett grundläggande exempel på hur du kan använda en ramtemportellerfunktion. Gå och försök och använd det i dina egna projekt.
Tack för att du läser!