Chargement d’un fichier SWF externe

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

En ActionScript 3.0, les fichiers SWF sont chargés avec la classe Loader. Pour charger un fichier SWF externe, vous devez définir quatre étapes en ActionScript :

  1. Créer un objet URLRequest avec l’adresse URL du fichier.

  2. Créer un objet Loader.

  3. Appeler la méthode load() de l’objet Loader en lui passant en paramètre l’occurrence de l’objet URLRequest.

  4. Appeler la méthode addChild() pour un conteneur d’objet d’affichage (par exemple le scénario principal d’un document Flash) afin d’ajouter l’occurrence de Loader à la liste d’affichage

Le code final se présente ainsi :

var request:URLRequest = new URLRequest("http://www.[yourdomain].com/externalSwf.swf"); 
var loader:Loader = new Loader() 
loader.load(request); 
addChild(loader);

Le même code peut être utilisé pour charger un fichier image externe (image JPEG, GIF ou PNG) en spécifiant l’adresse URL de ce fichier à la place de celle d’un fichier SWF. Contrairement à un fichier image, un fichier SWF peut contenir du code ActionScript. Ainsi, bien que le processus de chargement d’un fichier SWF soit identique à celui d’une image, le fichier SWF à l’origine du chargement et le fichier SWF chargé doivent se trouver dans le même sandbox de sécurité si vous souhaitez utiliser ActionScript pour communiquer avec le fichier SWF externe. En outre, si ce fichier externe contient des classes qui partagent le même espace de noms que les classes du fichier SWF qui le charge, il peut s’avérer nécessaire de créer un domaine d’application pour le fichier chargé afin d’éviter d’éventuels conflits d’espace de nom. Pour plus d’informations sur la sécurité et le domaine d’application, voir Utilisation de domaines d’application et Chargement de contenu.

Une fois que le fichier SWF externe est chargé, il devient accessible via la propriété Loader.content. Si ce fichier est publié en ActionScript 3.0, il s’agira soit d’un clip, soit d’un sprite, selon la classe qu’il étend.

Il existe quelques différences entre le chargement d’un fichier SWF dans Adobe AIR pour iOS et le chargement dans d’autres plates-formes. Pour plus d’informations, voir Chargement de fichiers SWF dans AIR pour iOS.

Considérations relatives au chargement de fichiers SWF de version ancienne

Si un fichier SWF externe a été publié dans une version antérieure d’ActionScript, il faut tenir compte de restrictions importantes. Contrairement à un fichier SWF ActionScript 3.0 qui s’exécute dans AVM2 (ActionScript Virtual Machine 2), un fichier SWF publié en ActionScript 1.0 ou 2.0 s’exécute dans AVM1 (ActionScript Virtual Machine 1).

Le chargement d’un fichier SWF ActionScript 1.0 ou 2.0 dans un fichier SWF ActionScript 3.0 présente d’importantes différences par rapport au chargement d’un fichier SWF ActionScript 3.0. Flash Player garantit une compatibilité totale avec les versions précédentes et les contenus publiés antérieurement. Tout contenu qui s’exécute dans les versions antérieures de Flash Player s’exécute dans les versions de Flash Player qui gèrent ActionScript 3.0. Tenez cependant compte des restrictions suivantes :

  • Le code ActionScript 3.0 peut charger un fichier SWF écrit en ActionScript 1.0 ou 2.0. Lorsque le chargement d’un fichier SWF ActionScript 1.0 ou 2.0 aboutit, l’objet chargé (la propriété Loader.content ) est un objet AVM1Movie. Une occurrence d’AVM1Movie n’est pas identique à une occurrence de MovieClip. C’est un objet d’affichage qui, contrairement à un clip, ne comporte pas de méthodes ni de propriétés liées au scénario. Le fichier SWF AVM2 parent ne peut pas accéder aux propriétés, méthodes ou objets de l’objet AVM1Movie chargé.

  • Les fichiers SWF écrits en ActionScript 1.0 ou 2.0 ne peuvent pas charger les fichiers SWF écrits en ActionScript 3.0. Cela signifie que les fichiers SWF créés dans Flash 8, Flex Builder 1.5 ou une version antérieure ne peuvent pas charger les fichiers SWF écrits en ActionScript 3.0.

    Il existe une seule exception à cette règle : un fichier SWF écrit en ActionScript 2.0 peut être remplacé par un fichier SWF écrit en ActionScript 3.0, sous réserve que le fichier écrit en ActionScript 2.0 n’ait effectué aucun chargement à quelque niveau que ce soit. Pour ce faire, le fichier SWF écrit en ActionScript 2.0 doit appeler loadMovieNum() et transmettre la valeur 0 au paramètre level.

  • En règle générale, les fichiers SWF écrits en ActionScript 1.0 ou 2.0 doivent faire l’objet d’une migration pour fonctionner conjointement avec des fichiers SWF écrits en ActionScript 3.0. Supposons, par exemple, que vous ayez créé un lecteur multimédia avec ActionScript 2.0. Ce lecteur multimédia charge des contenus divers également créés en ActionScript 2.0. Il est impossible de créer un contenu en ActionScript 3.0 et de le charger dans le lecteur multimédia. Vous devez effectuer une migration du lecteur vers ActionScript 3.0.

    Néanmoins, si vous créez un lecteur multimédia en ActionScript 3.0, il peut effectuer de simples chargements de votre contenu en ActionScript 2.0.

Le tableau ci-après récapitule les limites des versions précédentes de Flash Player relatives au chargement de contenus plus récents et à l’exécution de code, ainsi que les restrictions liées à la programmation croisée entre les fichiers SWF écrits en différentes versions d’ActionScript.

Fonctionnalité prise en charge

Flash Player 7

Flash Player 8

Flash Player 9 et 10

Peut charger les fichiers SWF pour

version 7 et antérieure

version 8 et antérieure

version 9 (ou 10) et antérieure

Machine virtuelle incluse

AVM1

AVM1

AVM1 et AVM2

Exécute les fichiers SWF écrits en ActionScript

1.0 et 2.0

1.0 et 2.0

1.0, 2.0 et 3.0

Dans le tableau ci-dessous, « Fonctionnalité prise en charge » fait référence au contenu lisible dans Flash Player 9 ou une version ultérieure. Le contenu lisible dans Flash Player version 8 ou antérieure peut être chargé, affiché, exécuté et programmé avec ActionScript 1.0 et 2.0 uniquement.

Fonctionnalité prise en charge

Contenu créé en ActionScript 1.0 et 2.0

Contenu créé en ActionScript 3.0

Peut charger du contenu et exécuter le code de contenus créé dans

ActionScript 1.0 et 2.0 uniquement

ActionScript 1.0 et 2.0 et ActionScript 3.0

Peut programmer le contenu créé dans

ActionScript 1.0 et 2.0 uniquement (ActionScript 3.0 via LocalConnection)

ActionScript 1.0 et 2.0 via LocalConnection

ActionScript 3.0