Flash tip: Advanced trace output in Flash ActionScript 3.0, Class name, function name and line number

Aujourd’hui une petite astuce pour tous les développeurs ActionScript avec Flash.

Cela fait un moment que je recherche un moyen d’afficher des message de debug dans la Sortie avec un maximum de détails.

Voici un petit script qui va vous changer la vie.

Simplement en ajoutant cette ligne :

Debug.log("foo", "bar");

Vous aurez automatiquement ce type de message :

[Class][method][line] foo bar

Installation

  1. Téléchargez le fichier Debug.as
  2. Copiez et collez le fichier Debug.as à la racine du projet, dans le même dossier que le fichier .fla
  3. Activez le mode debug dans Flash : Paramètres de publication > swf > Avancé > Activter debogage
  4. Utilisez le code suivant pour afficher le message de debug avancé

Utilisation

Debug.log("foo", "bar");

Code source

Debug.as code :

package 
{
	/**
	* Advanced trace method
	*
	* @author Benoît Freslon
	* @version 1.0
	* @example 	Usage
	* 
	* import Debug;
	* Debug.trace("foo", "bar");
	* 
	* output > [Class][Method][line] foo bar
	**/
	public class Debug
	{

		static public function log(...rest)
		{
			var error:Error = new Error();

			var tr:String = "";
			for each (var msg:String in rest)
			{
				tr +=  msg + " ";
			}
			var s:String = error.getStackTrace();

			var arr:Array = s.split("at ")[2].split("()");

			var stack:String = arr[0];
			var arrClass:Array = stack.split("/")[0].split("::");
			var className:String = arrClass[arrClass.length - 1];
			var functionName:String = stack.split("/")[1];
			if ( functionName == null )
			{
				functionName = className;
			}
			var arrLine:Array = arr[1].split(":");
			if (arrLine.length > 1) {
				var line:String = arrLine[arrLine.length-1].split("]")[0]
				trace( "[" + className + "][" + functionName + "]" + "[" + line + "]", tr );;
			} else {
				trace( "[" + className + "][" + functionName + "]", tr );
			}
		}
	}
}

Programmez bien :).