Sujets sur : SWFExplorer
Cours ActionScript 3 ‘SWFExplorer’
AMELIORATION de SWFExplorer : parcourir toutes les classes d’une librairie externe

Dans le cours AS3 (SWFExplorer) précédent, nous avons appris à utiliser la classe SWFExplorer et surtout dans quels cas l’implémenter dans une application flash.
Il existe une version encore plus performante de cette classe : SWFExplorer améliorée.
En plus des fonctionnalités de SWFExplorer, cette version améliorée permet carrément de récupérer TOUTES les classes d’un fichier SWF.
C’est à dire, même les classes qui ne sont pas linkées.
Cette version de SWFExplorer est encore plus simple d’utilisation pour instancier des classes d’une librairie SWF partagée.
Voici ce que je vais vous apprendre dans ce cours AS3 :
- Comment utiliser la classe SWFExplorer version améliorée.
- La technique pour charger un fichier SWF contenant des éléments partagés (graphismes, animations, polices de caractères…).
- Pourquoi utiliser la version améliorée de SWFExplorer.
Après avoir visionné ce cours ActionScript, vous serez capable d’utiliser la classe SWFExplorer version améliorée dans vos applications et jeux flash.
SWFExplorer améliorée
Exemple de code AS3 SWFExplorer
Voici la classe Main qui utilise les fonctionnalités de SWFExplorer version améliorée.
[codesyntax lang= »actionscript3″ title= »Exemple SWFExplorer améliorée » bookmarkname= »Exemple SWFExplorer améliorée »]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | package { import flash.utils.ByteArray; import ru.etcs.utils.getDefinitionNames; import flash.display.Loader; import flash.net.URLRequest; 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://etcs.ru/pre/getDefinitionNamesSource/ * */ public class Main extends Sprite { /** * 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"); loadSWF(); } /** * 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"); //var file:URLRequest = new URLRequest("ui.swf"); var file:URLRequest = new URLRequest("pixlib.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; // affiche toutes les classes du fichier swf MonsterDebugger.trace(this, getDefinitionNames(libraryBytes)); // affiche toutes les classes du fichier swf avec en plus les interfaces, les vecteurs, namespace... MonsterDebugger.trace(this, getDefinitionNames(libraryBytes, true)); // affiche seulement les classes avec un lien public (avec un linkage) // pratique pour récupérer les linkages graphiques de votre fichier swf MonsterDebugger.trace(this, getDefinitionNames(libraryBytes, true, true)); } } } |
[/codesyntax]
Télécharger le code source du cours AS3
Vous trouverez un exemple de code source utilisant SWFExplorer améliorée.
Télécharger “SWFExplorer améliorée” swfexplorer-ameliore-exemple.zip – Téléchargé 608 fois – 361,79 KoTélécharger la dernière version de SWFExplorer améliorée.
Connaissez-vous cette classe SWFExplorer améliorée ? L’utilisez-vous dans vos projets flash ?
Ou peut être que vous utilisez la méthode classique d’Adobe Flash en produisant un seul fichier SWF ?
Partagez votre expérience de développeurs ActionScript dans les commentaires ci-dessous.
Parcourir toutes les classes d’une librairie externe avec SWFExplorer

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.
[codesyntax lang= »actionscript3″ title= »Exemple SWFExplorer » bookmarkname= »Exemple SWFExplorer »]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | 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(); } } } |
[/codesyntax]
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é 563 fois – 332,03 KoTé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.