Documentation Flash CS3 |
|||
| Programmation avec ActionScript 3.0 > Utilisation des clips > Exemple : RuntimeAssetsExplorer | |||
La fonctionnalité Exporter pour ActionScript présente des avantages particuliers lorsque des bibliothèques peuvent être réutilisées sur plusieurs projets. Les symboles exportés vers ActionScript sont disponibles pour ce fichier SWF mais aussi pour tout fichier SWF au sein du même sandbox de sécurité qui le charge. De cette manière, un seul document Flash peut générer un fichier SWF destiné uniquement à accueillir des éléments graphiques. Cette technique est très utile pour les grands projets dans lesquels les concepteurs graphiques chargés des éléments visuels peuvent travailler en parallèle avec les développeurs qui créent une «enveloppe» SWF qui chargera les fichiers SWF des éléments graphiques au moment de l'exécution. Cette méthode peut vous servir dans la maintenance d'un ensemble de versions de fichiers dans lesquelles les éléments graphiques sont indépendants du développement par programmation.
L'application RuntimeAssetsExplorer charge tout fichier SWF qui est une sous-classe de RuntimeAsset et permet de consulter les éléments disponibles de ce fichier SWF. Cet exemple illustre les points suivants :
Loader.load()Avant de commencer, notez que tous les fichiers SWF doivent se trouver dans le même sandbox de sécurité. Pour plus d'informations, consultez la section Sandboxes de sécurité.
Pour obtenir les fichiers de cet exemple d'application, consultez la page www.adobe.com/go/learn_programmingAS3samples_flash_fr. Les fichiers de l'application RuntimeAssetsExplorer se trouvent dans le dossier Samples/Chapters/RuntimeAssetsExplorer. Cette application se compose des fichiers suivants :
|
Fichier |
Description |
|---|---|
|
RuntimeAssetsExample.mxml ou RuntimeAssetsExample.fla |
Interface utilisateur de l'application pour Flex (MXML) ou Flash (FLA). |
|
GeometricAssets.as |
Classe exemple qui implémente l'interface RuntimeAsset. |
|
GeometricAssets.fla |
Fichier FLA lié à la classe GeometricAssets (classe de document du fichier FLA) contenant les symboles exportés pour ActionScript. |
|
com/example/programmingas3/runtimeassetsexplorer/RuntimeLibrary.as |
Interface qui définit les méthodes attendues par tous les fichiers SWF d'actifs d'exécution qui seront chargés dans l'explorateur. |
|
com/example/programmingas3/runtimeassetsexplorer/AnimatingBox.as |
Classe du symbole de bibliothèque dont la forme est un rectangle pivotant. |
|
com/example/programmingas3/runtimeassetsexplorer/AnimatingStar.as |
Classe du symbole de bibliothèque dont la forme est une étoile pivotante. |
Pour que l'explorateur interagisse convenablement avec une bibliothèque SWF, la structure des bibliothèques d'éléments doit être formalisée. Pour ce faire, nous allons créer une interface, que l'on pourrait comparer à une classe dans la mesure où elle représente un modèle de définition des méthodes qui définissent une structure attendue. Par contre, à l'inverse d'une classe, elle ne comporte pas les corps des méthodes. L'interface est un moyen de communication pour la bibliothèque d'éléments et l'explorateur. Chaque fichier SWF d'éléments chargé dans le navigateur implémentera cette interface. Pour plus d'informations sur l'utilité des interfaces, consultez la section Interfaces.
L'interface RuntimeLibrary est très simple, puisque nous avons uniquement besoin d'une fonction qui fournit à l'explorateur un tableau de chemins de classe pour les symboles à exporter disponibles dans la bibliothèque. Cette interface utilise pour ce faire une seule méthode : getAssets().
package com.example.programmingas3.runtimeassetexplorer
{
public interface RuntimeLibrary
{
function getAssets():Array;
}
}
La définition de l'interface RuntimeLibrary permet de créer plusieurs fichiers SWF de bibliothèque d'actifs, qui pourront être chargés dans un autre fichier SWF. L'élaboration d'une bibliothèque SWF d'actifs repose sur quatre tâches :
Nous allons ensuite créer la classe GeometricAssets qui implémente l'interface RuntimeLibrary. et sera la classe du document FLA. Le code de cette classe est très proche de celui de l'interface RuntimeLibrary, la différence étant que la définition de classe comporte le corps de la méthode getAssets().
package
{
import flash.display.Sprite;
import com.example.programmingas3.runtimeassetexplorer.RuntimeLibrary;
public class GeometricAssets extends Sprite implements RuntimeLibrary
{
public function GeometricAssets() {
}
public function getAssets():Array {
return [ "com.example.programmingas3.runtimeassetexplorer.AnimatingBox",
"com.example.programmingas3.runtimeassetexplorer.AnimatingStar" ];
}
}
}
Si nous devions créer une deuxième bibliothèque d'exécution, nous pourrions créer un autre fichier FLA reposant sur une autre classe (AnimationAssets, par exemple) qui assure sa propre implémentation de getAssets().
Pour les besoins de cet exemple, nous étendrons simplement la classe MovieClip, sans ajouter de fonctionnalité aux actifs personnalisés. Le code suivant destiné à AnimatingStar est semblable à celui de AnimatingBox :
package com.example.programmingas3.runtimeassetexplorer
{
import flash.display.MovieClip;
public class AnimatingStar extends MovieClip
{
public function AnimatingStar() {
}
}
}
Nous allons maintenant connecter les actifs de classe MovieClip à la nouvelle classe en créant un nouveau fichier FLA et en entrant GeometricAssets dans le champ Classe du document de l'inspecteur des propriétés. Pour les besoins de cet exemple, nous allons créer deux formes très simples qui utilisent une interpolation de scénario pour effectuer une rotation horaire sur 360 images. Les deux symboles animatingBox et animatingStar sont définis pour l'exportation vers ActionScript et leurs champs Classe correspondent aux chemins de classe respectifs spécifiés dans l'implémentation de getAssets(). La classe de base par défaut flash.display.MovieClip est conservée, puisque nous voulons créer des sous-classes pour les méthodes MovieClip standard.
Après définition des paramètres d'exportation de votre symbole, publiez le fichier FLA. Vous disposez maintenant de votre première bibliothèque d'exécution. Ce fichier SWF pourrait être chargé dans un autre fichier SWF AVM2, dans lequel les symboles AnimatingBox et AnimatingStar seraient disponibles.
Le dernier élément fonctionnel à traiter est l'interface utilisateur de l'explorateur. Dans cet exemple, le chemin d'accès à la bibliothèque d'exécution est codé en dur dans la variable ASSETS_PATH. Vous pourriez également utiliser la classe FileReference, par exemple pour créer une interface qui recherche un fichier SWF particulier sur le disque dur.
Une fois que la bibliothèque d'exécution est chargée, Flash Player appelle la méthode runtimeAssetsLoadComplete().
private function runtimeAssetsLoadComplete(event:Event):void
{
var rl:* = event.target.content;
var assetList:Array = rl.getAssets();
populateDropdown(assetList);
stage.frameRate = 60;
}
Dans cette méthode, la variable rl représente le fichier SWF chargé. Le code appelle la méthode getAssets() du fichier SWF chargé, obtient la liste des éléments disponibles et remplit un composant ComboBox avec cette liste en appelant la méthode populateDropDown(). Cette méthode enregistre le chemin de classe complet de chaque élément. Si l'utilisateur clique sur le bouton Add, l'interface déclenche la méthode addAsset() :
private function addAsset():void
{
var className:String = assetNameCbo.selectedItem.data;
var AssetClass:Class = getDefinitionByName(className) as Class;
var mc:MovieClip = new AssetClass();
...
}
qui obtient le chemin de classe de l'élément actuellement sélectionné dans la ComboBox (assetNameCbo.selectedItem.data), et utilise la fonction getDefinitionByName() (du paquet flash.utils) pour obtenir une référence à la classe de l'élément afin de créer une nouvelle instance de celui-ci.
Flash CS3
M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire
Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000217.html