In diesem Quick Tip erfahren Sie, wie Sie die aktuelle Bildrate Ihrer Flash-Anwendung mithilfe von ActionScript 3 messen und das FPS auf dem Bildschirm anzeigen.
Frame Rate oder Frames pro Sekunde (fps) ist die Frequenz, mit der ein Bildgerät eindeutige aufeinanderfolgende Bilder, so genannte Frames, erzeugt. Der Begriff gilt gleichermaßen für Computergrafiken, Videokameras, Filmkameras und Bewegungserfassungssysteme.
Jedes Bild ist ein Standbild. Das Anzeigen von Bildern in schneller Folge erzeugt die Illusion von Bewegung. Je mehr Bilder pro Sekunde (fps), desto glatter erscheint die Bewegung.
Durch das Messen der fps können Sie die Leistung Ihres Films oder Ihrer Anwendung überprüfen und gegebenenfalls optimieren.
Dies kann sehr nützlich sein, wenn Sie eine Anwendung testen, die in verschiedenen Umgebungen, dem Internetbrowser, dem Desktop, einem Fernsehgerät oder einem mobilen Gerät ausgeführt wird.
Mit Hilfe von ActionScript 3 berechnen wir die Framerate mithilfe der getTimer () -Methode und erstellen ein TextField, um die Ergebnisse in Echtzeit auf der Bühne anzuzeigen.
Öffnen Sie Flash und erstellen Sie eine neue Flash-Datei (ActionScript 3)..
Drücken Sie Option / Alt + F9 oder gehen Sie zu Fenster> Aktionen, um den Aktionsbereich zu öffnen.
Wir verwenden drei Variablen, wie in den Kommentaren erläutert:
var startTime: Anzahl; // Zur Berechnung der relativen Zeit verwenden var framesNumber: Number = 0; // Aktuelle Anzahl von fps var fps: TextField = new TextField (); // Ein Textfeld zur Anzeige der aktuellen fps
Dies ist die Hauptfunktion unserer Theke:
function fpsCounter (): void startTime = getTimer (); // Ruft die Zeit in Millisekunden ab, seit der Film gestartet wurde. AddChild (fps); // fügt das TextField der Bühne hinzu addEventListener (Event.ENTER_FRAME, checkFPS); // Fügt einen EnterFrame-Listener hinzu und führt die Funktion checkFPS aus.
Diese Funktion berechnet die fps im Eingabefeld:
Funktion checkFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; // Ruft die Zeit in Sekunden ab, seit der Funktion ausgeführt wird framesNumber ++; // Fügt dem Frame-Zähler einen Wert hinzu, wenn (currentTime> 1) // Wenn die Zeit in Sekunden größer als 1 ist fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10.0) / 10.0 ); // Berechnet die Bildrate und zeigt sie im Textfeld an. StartTime = getTimer (); // Die Startzeit zurücksetzen framesNumber = 0; // Setze die Anzahl der Frames zurück
Verwenden Sie diese einzige Codezeile, um die Hauptfunktion zu starten:
fpsCounter ();
Der vollständige Code sollte folgendermaßen aussehen:
var startTime: Anzahl; var framesNumber: Number = 0; var fps: TextField = neues TextField (); function fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS); Funktion 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 ();
Vielleicht möchten Sie lieber eine Dokumentenklasse als einen Timeline-Code verwenden? Das folgende Snippet zeigt, wie es gemacht werden kann. Lesen Sie diesen kurzen Tipp, wenn Sie nicht sicher sind, wie Sie an eine Dokumentenklasse herangehen.
package import flash.display.MovieClip; import flash.text.TextField; import flash.events.Event; import flash.utils.getTimer; public class FPSDemo erweitert MovieClip public var startTime: Number; public var framesNumber: Number = 0; public var fps: TextField = neues TextField (); public function FPSDemo () fpsCounter (); public function fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS); public 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;
Sie können diese Klasse verwenden, um einen FPS-Zähler in jedes Projekt einzubetten:
var fpsDemo: FPSDemo = new FPSDemo (); addChild (fpsDemo);
Kopieren Sie einfach alles in eine neue AS-Datei und speichern Sie es als "FPSDemo.as". Dann können Sie es jederzeit verwenden.
Dies ist ein grundlegendes Beispiel für die Verwendung einer Bildzählerfunktion. Probieren Sie es aus, experimentieren Sie und verwenden Sie es in Ihren eigenen Projekten.
Danke fürs Lesen!