begin process at 2012 05 26 05:50:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > FIREBUGTRACER (AS3) - UTILISER LA CONSOLE FIREBUG POUR VOS DEBUGS ACTIONSCRIPT

FIREBUGTRACER (AS3) - UTILISER LA CONSOLE FIREBUG POUR VOS DEBUGS ACTIONSCRIPT


 Information sur la source

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ActionScripts Classé sous :debug, firebug, firefox, console, trace Niveau :Débutant Date de création :17/08/2009 Date de mise à jour :17/08/2009 18:09:54 Vu / téléchargé :4 557 / 161

Auteur : mouahaha

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (23)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Cette source utilise la classe ExternalInterface d'AS3 pour communiquer avec la console JavaScript de Firebug. Je pense qu'un bon nombre d'entre vous connaissent déjà Firebug, cette extension pour Firefox dédiée au debug HTML/CSS/JavaScript.

Ma classe FirebugTracer va vous permettre d'afficher des logs et des messages de debug dans le panneau Console de Firebug depuis ActionScript, de façon très simple.

Source

  • Voici un exemple d'utilisation :
  • Vous le retrouverez dans le fla (format Flash CS3)
  • // Import the class
  • import FirebugTracer;
  • // Start a timer
  • FirebugTracer.startTiming("Execution time");
  • // Log a text in the Console
  • FirebugTracer.log("Hello World!");
  • // Log a warning
  • FirebugTracer.log("Something seems to be wrong...", FirebugTracer.WARN);
  • // Log an error
  • FirebugTracer.log("FATAL ERROR !", FirebugTracer.ERROR);
  • // Group logs
  • FirebugTracer.startGroup("This is a group");
  • FirebugTracer.log("This is line 1");
  • FirebugTracer.log("This is line 2");
  • FirebugTracer.log("This is line 3");
  • FirebugTracer.log("Now we are going to close the group");
  • FirebugTracer.endGroup();
  • // Stop and display timer
  • FirebugTracer.endTiming("Execution time");
  • Et le code de la classe elle-même :
  • package
  • {
  • // - - - - - - - - - - -
  • // IMPORTS
  • import flash.external.ExternalInterface;
  • // - - - - - - - - - - -
  • // CLASS
  • public class FirebugTracer
  • {
  • // Available display modes : (See http://getfirebug.com/logging.html for more details)
  • public static const LOG :String = "console.log";
  • public static const DEBUG :String = "console.debug";
  • public static const INFO :String = "console.info";
  • public static const WARN :String = "console.warn";
  • public static const ERROR :String = "console.error";
  • // - - - - - - - - - - -
  • // FUNCTIONS
  • // Send a log to the Firebug console using the selected mode
  • public static function log ( fString:String, fMode:String = LOG ) :void
  • {
  • if( ExternalInterface.available ) ExternalInterface.call( fMode, fString );
  • }
  • // Start a group
  • public static function startGroup ( fString:String ) :void
  • {
  • if( ExternalInterface.available ) ExternalInterface.call( "console.group", fString );
  • }
  • // End a group
  • public static function endGroup () :void
  • {
  • if( ExternalInterface.available ) ExternalInterface.call( "console.groupEnd" );
  • }
  • // Start a timer
  • public static function startTiming ( fString:String ) :void
  • {
  • if( ExternalInterface.available ) ExternalInterface.call( "console.time", fString );
  • }
  • // Stop and display the timer
  • public static function endTiming ( fString:String ) :void
  • {
  • if( ExternalInterface.available ) ExternalInterface.call( "console.timeEnd", fString );
  • }
  • }
  • }
Voici un exemple d'utilisation :
Vous le retrouverez dans le fla (format Flash CS3)

// Import the class
import FirebugTracer;

// Start a timer
FirebugTracer.startTiming("Execution time");

// Log a text in the Console
FirebugTracer.log("Hello World!");

// Log a warning
FirebugTracer.log("Something seems to be wrong...", FirebugTracer.WARN);

// Log an error
FirebugTracer.log("FATAL ERROR !", FirebugTracer.ERROR);

// Group logs
FirebugTracer.startGroup("This is a group");
FirebugTracer.log("This is line 1");
FirebugTracer.log("This is line 2");
FirebugTracer.log("This is line 3");
FirebugTracer.log("Now we are going to close the group");
FirebugTracer.endGroup();

// Stop and display timer
FirebugTracer.endTiming("Execution time");


Et le code de la classe elle-même :

package
{
	// - - - - - - - - - - -
	// IMPORTS
	
	import flash.external.ExternalInterface;
	
	// - - - - - - - - - - -
	// CLASS
	
	public class FirebugTracer
	{
		// Available display modes : (See http://getfirebug.com/logging.html for more details)
		
		public static const LOG		:String = "console.log";
		public static const DEBUG	:String = "console.debug";
		public static const INFO	:String = "console.info";
		public static const WARN	:String = "console.warn";
		public static const ERROR	:String = "console.error";
		
		// - - - - - - - - - - -
		// FUNCTIONS
		
		// Send a log to the Firebug console using the selected mode
		
		public static function log ( fString:String, fMode:String = LOG ) :void
		{
			if( ExternalInterface.available ) ExternalInterface.call( fMode, fString );
		}
		
		// Start a group
		
		public static function startGroup ( fString:String ) :void
		{
			if( ExternalInterface.available ) ExternalInterface.call( "console.group", fString );
		}
		
		// End a group
		
		public static function endGroup () :void
		{
			if( ExternalInterface.available ) ExternalInterface.call( "console.groupEnd" );
		}
		
		// Start a timer
		
		public static function startTiming ( fString:String ) :void
		{
			if( ExternalInterface.available ) ExternalInterface.call( "console.time", fString );
		}
		
		// Stop and display the timer
		
		public static function endTiming ( fString:String ) :void
		{
			if( ExternalInterface.available ) ExternalInterface.call( "console.timeEnd", fString );
		}
	}
}

 Conclusion

Pour utiliser cette classe vous devrez auparavant installer Firebug (gratuit) :
http://getfirebug.com

Une fois votre page ouverte dans Firefox, il vous faudra activer Firebug et le panneau Console si ce n'est pas déjà fait.

Pour plus de détails sur l'utilisation de la Console elle-même, voir ici :
http://getfirebug.com/logging.html

Si vous avez des questions, n'hésitez pas !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 août 2009 18:09:54 :
Suppression de lignes vides dans le champ Source de cette page

 Sources du même auteur

Source avec Zip COLORMANAGER AS3
Source avec Zip AS2 - CALAGE AUTOMATIQUE DES CLIPS EN MODE NOSCALE
Source avec Zip Source avec une capture FORMULAIRE FLASH2MAIL SIMPLE AVEC INFOS
Source avec Zip UTILISATION DE L'OBJET CAMERA AVEC DETECTION DE MOUVEMENT ET...
Source avec Zip Source avec une capture UTILISATION DE L'OBJET COLOR (TEINTER UN SITE OU UNE IMAGE S...

 Sources de la même categorie

Source avec Zip Source avec une capture OUVRIR UNE ANIMATION EXTERNE DANS UN CLIP VIDE. par KcHeY
Source avec Zip ZOOM SUR UNE IMAGE par yasdar
Source avec Zip Source avec une capture UN PEU DE MATH par yasdar
Source avec Zip Source avec une capture PARTICULE SYSTEM par yasdar
Source avec Zip Source avec une capture GALLERIE PHOTO AVEC XML par yasdar

 Sources en rapport avec celle ci

Source avec Zip FENETRE DE DEBUG - TRACE EN LIGNE - FENETRE DE SORTIE par cfrezz
Source avec Zip Source avec une capture UNE FENÊTRE DE SORTIE POUR VOUS AIDER À DEBUGGER VOS CRÉATIO... par top30

Commentaires et avis

Commentaire de bali_balo le 18/08/2009 15:22:22

Salut mouhahaha.
Rien à dire sur ta source, elle fonctionne nickel ! 10/10

b_b

Commentaire de mouahaha le 18/08/2009 15:25:51

Merci, ça fait plaisir ! :)

m.

Commentaire de BlackWizzard le 26/08/2009 12:26:06 administrateur CS 10/10

Simple mais efficace!

Commentaire de afad le 08/09/2009 17:27:11

Bien vu !
Merci

Commentaire de WhiteMagus le 11/09/2009 20:17:27 10/10

Très utile, fonctionnel, et bien présenté, avec exemple concret, merci

Commentaire de mouahaha le 12/09/2009 01:06:25

Merci tout le monde, content que ça plaise... :)

Commentaire de Blacknight91titi le 12/09/2009 12:12:59 10/10

Superbe !

Plus qu'à utliser dans un try...catch pour éviter les exceptions du player (Exceptions auxquelles nous n'aurions pas pensé évidement... autrement c'est du débugage)
C'est plutôt pratique (également pour l'utilisateur !)

Y a-t-il une version AS2 ? Certains n'ont malheureusement pas encore franchît le pas (et certaines entreprises travaillent toujours en AS2)

10/10

Commentaire de mouahaha le 12/09/2009 13:40:00

Merci Blacknight !
J'essaierai de poster une version AS2 dès que j'aurais le temps.
Pour le try...catch, je suis pas sûr de voir ce que tu veux dire... Tu parles d'y mettre l'appel au javascript, c'est ça ?

Commentaire de Blacknight91titi le 12/09/2009 18:34:44

Non l'idée étant de supprimer toutes les exceptions qu'ActionScript pourrait générer et les transformer en appel firebug.

Mais cela ne fonctionnera que sur Firefox et avec le module Firebug installé. Donc pas forcément top.
D'autant qu'il faut penser à mettre un try...catch sur toutes les actions pouvant potentiellement générer une exception.

try...catch : Un petit tour dans le dico ;)

Commentaire de mouahaha le 12/09/2009 18:43:49

Hmm oui je vois...
En général j'utilise les try...catch en dernier recours quand j'ai vraiment un bug non identifié ;)
J'aurais pas le réflexe d'en mettre partout...

Commentaire de afad le 12/09/2009 20:53:49

Alors quelques corrections a apporter, vu que je l'ai utilisé un peu^^
Si je veux connaitre la valeur x d'un object, le code renvoi une erreur puisqu'il attend un String et non un Nombre. Il faudrait plutôt écrire :

public static function log ( fString:*, fMode:String = LOG ) :void

histoire d'englober tous les types de valeurs possible à afficher.

Sinon pour le fun, me souvient qu'avec describeType(), on peut lister tous les paramêtres d'un object d'un seul coup. ça m'a donné l'idée d'ajouter une fonction qui renvoi la liste complète des propriétés d'un object.

Il faut importer le package :
import flash.utils.describeType;

et voilà la fonction :

public static function logObject ( fObject:* ) :void
{
//describeType renvoi un XML contenant les paramêtres, méthodes, variables d'un objet.
var description:XML = describeType(fObject);

//Le noeud accessor contient la liste des getters setters.
var liste: XMLList = description.accessor;
for each(var item: XML in liste)
{
try
{
var propItem:String = item.@name;
var valeurItem:* = fObject[propItem];
FirebugTracer.log(propItem + " : " + valeurItem);
}
catch(error:Error)
{
FirebugTracer.log(error, FirebugTracer.ERROR);
}
}
}

Ensuite il suffit de faire par exemple :

FirebugTracer.logObject(stage);
FirebugTracer.logObject(step1);


Il serait possible aussi d'avoir une fonction pour lister le contenu d'un XML créé dynamiquement.

Bye
aFaD

Commentaire de mouahaha le 13/09/2009 12:57:46

Intéressant, je vais jeter un oeil à tout ça...
Je viens de découvrir ASDoc aussi, pour faire des documentations ActionScript comme les docs officielles d'Adobe, je vais peut-être m'en servir pour documenter cette classe.
Bien vu pour le * au lieu de String.

Commentaire de fratcha le 12/11/2009 10:38:28

La classe fonctionne également avec la console de chrome :).

Commentaire de WhiteMagus le 12/11/2009 18:05:29

En effet, elle marche avec chrome, et du coup, avec Safari aussi (les webkit en sorte). Je viens de vérifié. Encore mieux du coup
Bye !

Commentaire de nray le 11/12/2009 11:28:42

Bonjour mouahaha,

Je dois certainement être une brêle, car je n'arrive pas a faire afficher les erreurs... J'ai importé la classe dans mon swf, et mettant le fichier .as dans la même dossier puis j'ouvre mon swf avec le navigateur et active firebug avec la console...et là : rien ne s'affiche alors que dans flash ça n'arrête pas...

Merci de m'aider, svp.

nafl

Commentaire de mouahaha le 11/12/2009 11:35:26

Tu ouvres le SWF directement, c'est sans doute ce qui bloque. Intègre-le comme il faut dans une page web (en cochant HTML dans les paramètres de publication de Flash par exemple) et ouvre celle-ci dans ton navigateur.
Ça devrait mieux fonctionner.

Commentaire de nray le 11/12/2009 11:56:27

Aaaaaaaahh, forcément! Merci de cette précision.
Mais après l'avoir publié avec la page HTML, que j'ai ouvert après, je n'ai toujours rien qui s'affiche...J'ai juste à intégrer "import FirebugTracer;" sur l'image 1 de mon anim, en mettant le fichier FirebugTracer.as dans le même dossier que mon anim?

Merci encore pour tes réponses...

Commentaire de mouahaha le 11/12/2009 12:02:40

Essaye avec le code que j'ai posté dans la section Source de cette page, les lignes 4 à 28.
Il y a d'abord l'import oui, mais ensuite pour afficher quelque chose il faut utiliser la fonction log de la classe FirebugTracer.
Essaye avec le fichier fourni dans le zip si tu n'y arrive toujours pas.

Commentaire de nray le 11/12/2009 12:25:47

J'ai bien intégré les lignes de codes 4 à 28, à la suite de l'import de la classe, sur mon image1, mais ça ne fonctionne toujours pas, je ne sais plus comment faire. Je suis désolé de t'embêter...

Est ce que par hasard, tu pourrais m'éclairer sur mon code erreur, stp? :

TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at MethodInfo-44()
at flash.utils::Timer/flash.utils:Timer::_timerDispatch()
at flash.utils::Timer/flash.utils:Timer::tick()

En fait, je pense que mon problème vient du fait que j'ai intégré 25 fonctions Timer (sans répétition) dans mon anim, et que je ne sais pas comment les stopper... A ton avis?

Merci encore,

Commentaire de mouahaha le 11/12/2009 12:34:17

En effet ça n'a rien à voir avec ma classe...
Tu fais appel dans un écouteur de Timer à quelque chose (variable) qui n'existe pas. Revois le fonctionnement de tes timers, c'est bizarre que tu aies besoin d'en créer autant. Réutilise plutôt ceux qui ne servent plus, en appelant leur fonction reset() avant de les redémarrer.

Commentaire de nray le 11/12/2009 13:12:29

En fait voici mon code que j'utilise 25 fois (parceque pour l'instant je bloque sur les boucles) :
deco3.addEventListener(MouseEvent.MOUSE_DOWN,apparaitre3);
function apparaitre3(evt:MouseEvent){
deco3.alpha=100;
num3.alpha=0;

var ecoute:Sound = new Sound();
var adresseFichierSon:URLRequest = new URLRequest("utils/sons/tilk.mp3");
ecoute.load(adresseFichierSon); //chargement puis lecture du son
ecoute.play();
monTimer.reset();
var monTimer:Timer = new Timer(1500); // délai pour débloquer la déco suivante
monTimer.addEventListener(TimerEvent.TIMER, timerHandler);
monTimer.start();
function timerHandler(evt:TimerEvent):void {
            deco4.mouseEnabled=true;
}

}

il j'ai l'erreur suivante : TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at calendrierAventFinal4Timereset_fla::MainTimeline/apparaitre2();

J'en peux plus de bloquer là, ça fait 3 jours... Pitié. Il y a quelque chose qui m'échappe.

Merci encore pour votre patience et vos explications.

Commentaire de mouahaha le 11/12/2009 13:54:26

Si ta fonction apparaitre2 est la même que apparaitre3, la référence nulle doit être sur la ligne monTimer.reset();
En effet tu déclares la var monTimer après cette ligne, donc elle n'existe pas encore.
Pour accéder au timer précédent il faut que tu le déclares à l'extérieur de ta fonction.
De toute façon vu l'utilisation tu ferais mieux de faire des timers à usage unique : monTimer = new Timer(1500, 1); et de metter l'écouteur sur l'évènement TIMER_COMPLETE au lieu de TIMER. Du coup tu peux virer la ligne avec le reset() et ça devrait aller.
Il y aurait pas mal d'optimisation à faire mais je vais te laisser y réfléchir tout seul, je ne vais pas pouvoir t'aider plus. Si tu as d'autres questions, pose-les sur le forum, ce sera mieux que dans des commentaires de source.
Bon courage !

Commentaire de nray le 11/12/2009 14:36:53

Merci beaucoup pour ton aide.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Firefox && MTASC && Trace() [ par juki_webmaster ] Bonjour,Je débute en ActionScript ( 2 ! ), et j'ai besoin d'une petite aide.J'utilise MTASC , Firefox & Firebug et je souhaiterais savoir comment ça marche pas mais pourquoi ?? [ par guest ] Bonjour toulmonde, voilà mon souci, j'aimerai parametrer une temporisation :laps = _root.temps;trace(laps); a = setInterval(deconte, 1000);function firefox + flash + xml [ par phana63 ] Bonjour,Voila, j'ai créer un site flash. Mon porbleme vient lors de l'affichage.Sous firefox, le flash n'affiche pas les images interpréter par un xml Problèmes comptabilité Firefox-Frames-Flash [ par santille ] Bonjour, Voilà mon problème :J'ai créé 2 frames sur ma page d'accueil. L'un comporte la navigation et l'autre contient un fichier Flash .swf à l'int fond blanc des flash sous html [ par jorick44 ] salut,  je suis actuellement en train de créer un site sous Dreamweaver 8 en html et à l'aide de Flash professional 8. lorsque j'exporte les *.swf en probléme de fonctions qui ne communiquent pas entre elles. [ par cgaraude ] Bonjours à tous, je rencontre un problème qui est certainement dû à mon manque d'expérience en matière de class ( AS2 ). Voila deux jours que je parco Probleme avec Firefox [ par diego1983 ] Bonjour, j'ai créé un site internet avec un menu en flash sur le cotéTout fonctionne correctement sur Internet explorer, mais le menu ne s'affiche pas problème load [ par funlife ] function onLoad (){this.tonLoadVars.decode();trace(this.tonLoadVars.image55);this.createEmptyMovieClip("image22",this.getnextHighestDepth()) loadMovie Un problème fullscreen pas comme les autres [ par sousoulebarbu ] Bonjour à tous,J'ai un petit soucis, lorsque je fais un bête trace(Stage.displayState); tout simple, je reçois "Il n'existe aucune propriété nommée ' Créer un évènement sur MoviClip crée dynamiquement [ par dadoudamiendutka ] Créer un évènement sur MoviClip crée dynamiquement Bonjour, J'expose mon problème.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,092 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales