Chargement de contenu

Un fichier SWF peut charger les types de contenu suivants :

Sous-rubriques

Chargement de fichiers SWF et d'images
Chargement de sons et vidéos
Chargement de fichiers SWF et d'images à l'aide de la balise <img> d'un champ texte
Contenu diffusé à l'aide de serveur RTMP

Chargement de fichiers SWF et d'images

La classe Loader permet de charger des fichiers SWF et des images (fichiers JPG, GIF ou PNG). Un fichier SWF, s'il ne se trouve pas dans le sandbox local avec système de fichiers, peut charger des fichiers SWF et des images depuis n'importe quel domaine réseau. Seuls les fichiers SWF associés aux sandboxes locaux peuvent charger des fichiers SWF et des images issus du système de fichiers local. Cependant, les fichiers du sandbox local avec réseau peuvent uniquement charger des fichiers SWF locaux qui se trouvent dans le sandbox local approuvé ou avec réseau. Les fichiers SWF associés au sandbox local avec réseau peuvent charger du contenu autre que des fichiers SWF (par exemple des images), mais ne peuvent pas accéder aux données du contenu chargé.

Lorsque vous chargez un fichier SWF d'une source non approuvée (telle qu'un domaine autre que celui du fichier SWF racine de l'objet Loader), il peut s'avérer utile de définir un masque pour ce dernier, afin d'empêcher le contenu chargé, qui est un enfant de l'objet Loader, d'apparaître dans des parties de la scène qui ne relèvent pas de ce masque, comme illustré par le code suivant :

import flash.display.*;
import flash.net.URLRequest;
var rect:Shape = new Shape();
rect.graphics.beginFill(0xFFFFFF);
rect.graphics.drawRect(0, 0, 100, 100);
addChild(rect);
var ldr:Loader = new Loader();
ldr.mask = rect;
var url:String = "http://www.unknown.example.com/content.swf";
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq);
addChild(ldr);

Lorsque vous appelez la méthode load() de l'objet Loader, vous pouvez spécifier un paramètre context, qui constitue un objet LoaderContext. La classe LoaderContext inclut trois propriétés qui vous permettent de définir comment le contenu chargé sera utilisé :

Pour plus d'informations, voir Spécification du contexte de chargement.

L'objet Loader possède une importante propriété, contentLoaderInfo, qui constitue un objet LoaderInfo. Contrairement à la plupart des objets, un objet LoaderInfo est partagé entre le fichier SWF à l'origine du chargement et le contenu chargé. Il est en outre accessible par les deux parties. Si le contenu chargé est un fichier SWF, il peut accéder à l'objet LoaderInfo au moyen de la propriété DisplayObject.loaderInfo. Les objets LoaderInfo incluent des informations telles que la progression du chargement, l'URL du fichier de chargement et du fichier chargé, la relation de confiance entre ces deux fichiers, et d'autres renseignements. Pour plus d'informations, voir Suivi de la progression du chargement..

Chargement de sons et vidéos

En dehors des fichiers du sandbox local avec système de fichiers, tous les fichiers SWF sont autorisés à charger des sons et des vidéos en provenance d'un réseau grâce aux méthodes Sound.load(), NetConnection.connect() et NetStream.play().

Seuls les fichiers SWF locaux peuvent charger des médias du système de fichiers local. Seuls les fichiers du sandbox local avec système de fichiers et du sandbox local approuvé peuvent accéder aux données de ces fichiers chargés.

D'autres restrictions s'appliquent à l'accès aux données à partir d'un média chargé. Pour plus d'informations, voir Accès aux médias chargés comme s'il s'agissait de données.

Chargement de fichiers SWF et d'images à l'aide de la balise <img> d'un champ texte

La balise <img> permet de charger des fichiers SWF et bitmap dans un champ texte, comme le montre le code suivant :

<img src = 'filename.jpg' id = 'instanceName' >

Pour accéder au contenu chargé de cette manière, utilisez la méthode getImageReference() de l'instance TextField, comme dans le code suivant :

var loadedObject:DisplayObject = myTextField.getImageReference('instanceName');

Notez cependant que les fichiers SWF et image chargés de cette manière sont placés dans le sandbox correspondant à leur origine.

Lorsque vous chargez un fichier image à l'aide de la balise <img> d'un champ texte, l'accès aux données de l'image peut être autorisé par le biais du fichier de régulation interdomaine. Vous pouvez vérifier l'existence d'un tel fichier en ajoutant l'attribut checkPolicyFile à la balise <img>, comme le montre le code suivant :

<img src = 'filename.jpg' checkPolicyFile = 'true' id = 'instanceName' >

Lorsque vous chargez un SWF à l'aide de la balise <img> d'un champ texte, vous pouvez autoriser l'accès aux données de ce fichier SWF via un appel à la méthode Security.allowDomain().

Si vous utilisez la balise <img> d'un champ texte pour charger un fichier externe (plutôt que d'incorporer une classe Bitmap dans votre fichier SWF), un objet Loader est automatiquement créé comme enfant de l'objet TextField et le fichier externe est chargé dans le Loader comme si vous aviez utilisé l'objet Loader dans ActionScript pour charger ce fichier. Dans ce cas, la méthode getImageReference() renvoie le Loader automatiquement créé. Aucune vérification de sécurité n'est nécessaire pour charger cet objet Loader car il se trouve dans le même sandbox de sécurité que le code appelant.

Toutefois, si vous faites référence à la propriété content de l'objet Loader pour accéder au média chargé, des règles de sécurité s'appliquent. Si le contenu est une image, vous devez mettre en œuvre un fichier de régulation interdomaine ; s'il s'agit d'un fichier SWF, vous devez modifier le code de ce fichier de manière qu'il appelle la méthode allowDomain().

Contenu diffusé à l'aide de serveur RTMP

Flash Media Server utilise le protocole RTMP (Real-Time Media Protocol) pour servir des données, des sons et des vidéos. Un fichier SWF charge ce type de média à l'aide de la méthode connect() de la classe NetConnection, en transmettant une URL RTMP comme paramètre. Flash Media Server peut restreindre les connexions et empêcher le téléchargement du contenu, selon le domaine du fichier requis. Pour plus d'informations, reportez-vous à la documentation Flash Media Server.

Pour les médias chargés à partir de sources RTMP, vous ne pouvez pas utiliser les méthodes BitmapData.draw() et SoundMixer.computeSpectrum() pour extraire les données image et son au moment de l'exécution.


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/00000353.html