Astuce comment créer un compteur de fréquence d'images dans ActionScript 3.0

Dans cette astuce, vous apprendrez à mesurer la cadence actuelle de votre application Flash à l'aide d'ActionScript 3 et à afficher le FPS à l'écran..


L'importance du taux de trame

La cadence, ou nombre d'images par seconde (fps), est la fréquence à laquelle un périphérique d'imagerie produit des images consécutives uniques appelées images. Le terme s’applique aussi bien aux images de synthèse, aux caméras vidéo, aux caméras de cinéma et aux systèmes de capture de mouvement.

Chaque image est une image fixe. l'affichage des cadres en succession rapide crée l'illusion de mouvement. Plus il y a d'images par seconde (fps), plus le mouvement apparaît en douceur.

Mesurer les images par seconde vous permettra de vérifier les performances de votre film ou de votre application et d’optimiser si nécessaire..

Cela peut être très utile lorsque vous testez une application qui s'exécutera dans différents environnements, que ce soit le navigateur Internet, le bureau, la télévision ou un périphérique mobile..

Avec un peu d'aide d'ActionScript 3, nous allons calculer la cadence en utilisant la méthode getTimer () et créer un TextField pour afficher les résultats, en temps réel, sur la scène..


Étape 1: Créer un nouveau fichier

Ouvrez Flash et créez un nouveau fichier Flash (ActionScript 3)..


Étape 2: Ouvrez le panneau Actions

Appuyez sur Option / Alt + F9 ou sélectionnez Fenêtre> Actions pour ouvrir le panneau Actions..


Étape 3: Variables

Nous allons utiliser trois variables, comme expliqué dans les commentaires:

var startTime: Number; // Permet de calculer le temps relatif var framesNumber: Number = 0; // Nombre actuel de fps var fps: TextField = new TextField (); // Un TextField pour afficher le fps réel

Étape 4: Fonction principale

C'est la fonction principale de notre compteur:

 fonction fpsCounter (): void startTime = getTimer (); // Obtient le temps en millisecondes depuis le début du film addChild (fps); // Ajoute le TextField à la scène addEventListener (Event.ENTER_FRAME, checkFPS); // Ajoute un écouteur EnterFrame et exécute la fonction checkFPS

Étape 5: Vérifiez sur Enter Frame

Cette fonction calcule les images par seconde sur la trame d'entrée:

 function checkFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; // Obtient le temps en secondes depuis l'exécution de la fonction framesNumber ++; // Annonces 1 dans le compteur de trames if (currentTime> 1) // Si le temps en secondes est supérieur à 1 fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10.0) / 10.0 ) // Calcule la fréquence d'images et l'affiche dans le champ de texte startTime = getTimer (); // Réinitialiser l'heure de début framesNumber = 0; // Réinitialiser le nombre d'images

Étape 6: appeler la fonction

Utilisez cette seule ligne de code pour démarrer la fonction principale:

fpsCounter ();

Étape 7: Code complet

Le code complet devrait ressembler à ceci:

var startTime: Number; var framesNumber: Number = 0; var fps: TextField = new TextField (); fonction fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS);  function checkFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; framesNumber ++; if (heure actuelle> 1) fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10.0) / 10.0); startTime = getTimer (); framesNumber = 0;  fpsCounter ();

Étape 8: Version de la classe de document

Peut-être préférez-vous utiliser une classe de document plutôt qu'un code de scénario? L'extrait suivant montre comment s'y prendre. Lisez ce petit conseil si vous ne savez pas comment aborder une classe de document..

 package import flash.display.MovieClip; import flash.text.TextField; import flash.events.Event; import flash.utils.getTimer; Classe publique FPSDemo étend MovieClip public var startTime: Number; public var framesNumber: Number = 0; public var fps: TextField = new TextField (); fonction publique FPSDemo () fpsCounter ();  fonction publique fpsCounter (): void startTime = getTimer (); addChild (fps); addEventListener (Event.ENTER_FRAME, checkFPS);  fonction publique checkFPS (e: Event): void var currentTime: Number = (getTimer () - startTime) / 1000; framesNumber ++; if (heure actuelle> 1) fps.text = "FPS:" + (Math.floor ((framesNumber / currentTime) * 10.0) / 10.0); startTime = getTimer (); framesNumber = 0; 

Vous pouvez utiliser cette classe pour incorporer un compteur FPS dans tout projet comme ceci:

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

Copiez simplement le tout dans un nouveau fichier AS et enregistrez-le sous le nom "FPSDemo.as". Vous pourrez l'utiliser à tout moment..

Conclusion

Voici un exemple simple d'utilisation d'une fonction de compteur de cadence. Essayez-le, expérimentez-le et utilisez-le dans vos propres projets.

Merci d'avoir lu!