<h2>Votre Formation vidéo</h2><br/>
Votre formation est décomposée<br/>
en chapitres très clairs de 20 à 30 min. <h2>Des exemples SWF </h2><br/>
Chaque leçon est accompagnée<br/>
du code source avec le fla et les classes. <h2>Votre Suivi personnalisé</h2><br/>
Vous pouvez  me poser toutes<br/>
vos questions sous les cours vidéos.

Parcourir toutes les classes d’une librairie externe avec SWFExplorer

1 question

Écrit le 20 septembre par Matthieu
Publié dans le(s) sujet(s) ActionScript 3

Mots clés : , , ,

Le Kit du Développeur Flash

Continuons la découverte de classes très utiles dans le développement d’applications et jeux flash : SWFExplorer.

Encore une nouvelle classe développée par Thibault Imbert.

Vous vous demandez peut être à quoi peut servir l’exploration d’un fichier SWF, je m’étais posé la même question au départ.

En fait, cela permet d’instancier dynamiquement des objets (classes, éléments graphiques…) dans notre application flash.

C’est à dire, votre main.swf charge des librairies partagées (assets.swf), des polices de caractères (fonts.swf), etc…

Puis directement dans main.swf et sans connaître à l’avance le nom des classes, vous pouvez les instancier.

SWFExplorer vous permet de récupérer les noms de classes disponibles dans un fichier SWF.

Voici ce que je vais vous apprendre dans ce cours AS3 :

  • Comment utiliser la classe SWFExplorer.
  • 2 techniques pour charger un fichier SWF contenant des éléments partagés (graphismes, animations, polices de caractères…).
  • L’intérêt d’utiliser les fonctionnalités de SWFExplorer.

Après avoir visionné ce cours ActionScript, vous serez capable d’utiliser la classe SWFExplorer dans vos applications et jeux flash.

SWFExplorer

Exemple de code AS3 SWFExplorer

Voici la classe Main qui utilise les fonctionnalités de SWFExplorer.

package
{
 
	import flash.display.Loader;
	import flash.utils.ByteArray;
	import org.bytearray.explorer.SWFExplorer;
	import flash.net.URLRequest;
	import org.bytearray.explorer.events.SWFExplorerEvent;
	import flash.events.Event;
	import flash.display.Sprite;
 
	import com.demonsters.debugger.MonsterDebugger;
 
	/**
	 * La classe Main qui étend Sprite.
	 *
	 * définit le nombre d'images par secondes dans les paramètres de compilation
	 * -default-frame-rate 10
	 *
	 * source : http://code.google.com/p/swfexplorer/
	 *
	 */
	public class Main extends Sprite
	{
		private var oSWFexplorer : SWFExplorer;
 
		/**
		 * Constructeur.
		 *
		 */
		public function Main()
		{
			// attend la fin de l'initialisation de la scène
			this.addEventListener(Event.ADDED_TO_STAGE, onReady, false, 0, true);
		}
 
		/**
		 * Démarrage de l'application.
		 * définit le nombre d'images par secondes dans les paramètres de compilation
		 * -default-frame-rate 10
		 *
		 */
		private function onReady(event : Event) : void
		{
			this.removeEventListener(Event.ADDED_TO_STAGE, onReady);
 
			// Init De MonsterDebugger
			MonsterDebugger.initialize(this);
			MonsterDebugger.trace(this, "Start Application");
 
			// chargement d'un SWF à partir d'un objet SWFExplorer
			oSWFexplorer  = new SWFExplorer();
			oSWFexplorer.addEventListener(SWFExplorerEvent.COMPLETE, onLoadAssetsReady);
 
			//oSWFexplorer.load(new URLRequest("fonts.swf"));
			oSWFexplorer.load(new URLRequest("eaze-tween.swf"));
		}
 
		/**
		 * Chargement d'un SWF à partir d'un objet Loader.
		 *
		 */
		private function loadSWF() : void
		{
			var _loader:Loader = new Loader();
			_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onSWFLoaded );
			var file:URLRequest =  new URLRequest("fonts.swf");
			_loader.load(file);
		}
 
		/**
		 * SWF chargé.
		 * Récupération des définitions de classes.
		 *
		 */
		private function onSWFLoaded(event : Event) : void
		{
			MonsterDebugger.trace(this, "onSWFLoaded parse some SWF bytes");
			MonsterDebugger.trace(this, event);
 
			var libraryBytes : ByteArray = event.target.content.loaderInfo.bytes as ByteArray;
			var definitions:Array = oSWFexplorer.parse(libraryBytes);
 
			MonsterDebugger.trace(this,  "definitions ");
			// renvoie un tableau contenant les définitions des classes
			MonsterDebugger.trace(this,  definitions );
 
			// renvoie un tableau contenant les définitions des classes
			MonsterDebugger.trace(this,  oSWFexplorer.getDefinitions() );
 
			// affiche le nombre de classes
			MonsterDebugger.trace(this, oSWFexplorer.getTotalDefinitions());
		}
 
		/**
		 * SWF chargé par SWFExplorer.
		 * Récupération des définitions de classes.
		 *
		 */
		private function onLoadAssetsReady(e : SWFExplorerEvent) : void
		{
			oSWFexplorer.removeEventListener(SWFExplorerEvent.COMPLETE, onLoadAssetsReady);
 
			MonsterDebugger.trace(this, "onLoadAssetsReady");
			MonsterDebugger.trace(this, e);
 
			// renvoie un tableau contenant les définitions des classes
			MonsterDebugger.trace(this, e.definitions);
 
			// renvoie un tableau contenant les définitions des classes
			MonsterDebugger.trace(this, e.target.getDefinitions());
 
			// affiche le nombre de classes
			MonsterDebugger.trace(this, e.target.getTotalDefinitions());
 
			loadSWF();
		}
 
	}
}

Télécharger le code source du cours AS3

Vous trouverez un exemple de code source utilisant SWFExplorer.

Télécharger “SWFExplorer” SWFExplorer-exemple.zip – Téléchargé 83 fois – 332 KB

Télécharger la dernière version de SWFExplorer.

Connaissez-vous cette classe SWFExplorer ? L’utilisez-vous dans vos projets flash ?

Partagez vos classes utilitaires dans les commentaires ci-dessous.

 



Développez des Jeux et Applications Flash avec la Formation AS3 Facile !

Recevez Gratuitement Des Cours en Vidéos, des codes source et des livrets de formation.
Et en bonus gratuit : Le Framework AS3 Facile ! 


sed Donec libero nunc quis dolor. mattis Praesent