Packageflash.media
Classepublic class SoundLoaderContext
HéritageSoundLoaderContext Inheritance Object

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9

La classe SoundLoaderContext effectue des contrôles de sécurité des fichiers qui chargent le son. Les objets SoundLoaderContext sont transmis en tant qu’arguments au constructeur et à la méthode load() de la classe Sound.

Lorsque vous employez cette classe, tenez compte du modèle de sécurité suivant :

Néanmoins, dans Adobe AIR, le contenu du sandbox de sécurité application (contenu installé avec l'application AIR) n'est pas soumis à ces restrictions de sécurité.

Pour plus d'informations sur la sécurité, consultez les références suivantes :



Propriétés publiques
 PropriétéDéfini par
  bufferTime : Number = 1000
Durée, en millisecondes, de préchargement dans une mémoire tampon d'un son en flux continu avant que la diffusion ne commence.
SoundLoaderContext
  checkPolicyFile : Boolean = false
Indique si l'application doit tenter de télécharger un fichier de régulation d'URL à partir du serveur du son chargé avant de commencer à charger ce dernier.
SoundLoaderContext
 Inheritedconstructor : Object
Référence à l'objet de classe ou à la fonction constructeur d'une occurrence donnée d'un objet.
Object
 Inheritedprototype : Object
[statique] Référence à l'objet prototype d'un objet de classe ou fonction.
Object
Méthodes publiques
 MéthodeDéfini par
  
SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)
Crée un objet SoundLoaderContext.
SoundLoaderContext
 Inherited
Indique si la propriété spécifiée d'un objet est définie.
Object
 Inherited
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l'objet spécifié en tant que paramètre.
Object
 Inherited
Indique si la propriété spécifiée existe et est énumérable.
Object
 Inherited
Définit la disponibilité d'une propriété dynamique pour les opérations en boucle.
Object
 Inherited
Renvoie la représentation sous forme de chaîne de l'objet spécifié.
Object
 Inherited
Renvoie la valeur primitive de l'objet spécifié.
Object
Détails de la propriété
bufferTimepropriété
public var bufferTime:Number = 1000

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9

Durée, en millisecondes, de préchargement dans une mémoire tampon d'un son en flux continu avant que la diffusion ne commence.

Vous pouvez remplacer la valeur de SoundLoaderContext.bufferTime en définissant la propriété globale SoundMixer.bufferTime. La propriété SoundMixer.bufferTime affecte uniquement la durée de mise en mémoire tampon des sons en flux continu imbriqués dans un fichier SWF. Elle n’a aucune incidence sur les objets Sound créés dynamiquement (autrement dit, créés dans ActionScript).

checkPolicyFilepropriété 
public var checkPolicyFile:Boolean = false

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9

Indique si l'application doit tenter de télécharger un fichier de régulation d'URL à partir du serveur du son chargé avant de commencer à charger ce dernier. Cette propriété s’applique si le son chargé à l’aide de la méthode Sound.load() se trouve en dehors du domaine du fichier appelant.

Définissez cette propriété sur true lorsque vous chargez un son qui se trouve en dehors du domaine du fichier appelant et que le code dans le fichier appelant requiert un accès de niveau bas pour les données du son. Référencer la propriété Sound.id3 pour extraire un objet ID3Info et appeler la méthode SoundMixer.computeSpectrum() pour extraire des échantillons audio du son chargé constituent des exemples d’accès de bas niveau. Si vous tentez d'accéder aux données audio sans définir la propriété checkPolicyFile sur true au chargement, vous risquez d'obtenir une exception SecurityError car le fichier de régulation requis n'a pas été téléchargé.

Si un accès de bas niveau aux données audio que vous chargez est inutile, il est préférable de ne pas définir checkPolicyFile sur true. La recherche d'un fichier de régulation consomme de la bande passante réseau et peut retarder le début du téléchargement. N'effectuez donc cette opération qu'en cas de nécessité.

Lorsque vous appelez Sound.load() en définissant SoundLoaderContext.checkPolicyFile sur true, Flash Player ou AIR doit télécharger un fichier de régulation d'URL approprié, ou déterminer qu'un tel fichier n'existe pas, avant de commencer à télécharger le son spécifié. Pour vérifier l’existence d’un fichier de régulation, Flash Player ou AIR exécute les actions suivantes, dans l’ordre indiqué :

Dans tous les cas, Flash Player ou AIR requiert que le serveur du son héberge un fichier de régulation approprié et que ce fichier autorise l'accès au fichier son à URLRequest.url, sur la base de l'emplacement du fichier de régulation, et qu'il permette au domaine du fichier appelant d'accéder au son par le biais d'une ou plusieurs balises <allow-access-from>.

Si vous réglez checkPolicyFile sur true, Flash Player ouAIR attend la vérification du fichier de régulation avant de télécharger le son. Avant d'effectuer des opérations de bas niveau sur les données audio, en appelant Sound.id3 ou SoundMixer.computeSpectrum() par exemple, attendez que l'objet Sound ait déclenché les événements progress et complete.

Si vous définissez checkPolicyFile sur true et qu'il n'existe aucun fichier de régulation approprié, vous ne recevez aucun message d'erreur tant que vous n'effectuez pas d'opération nécessitant un tel fichier ; dans ce cas Flash Player ou AIR renvoie une exception SecurityError. Une fois que vous avez reçu un événement complete, vous pouvez vérifier qu'un fichier de régulation approprié a été éventuellement trouvé en extrayant la valeur de Sound.id3 d'un bloc try et en vérifiant si une exception SecurityError est renvoyée.

Servez-vous de checkPolicyFile avec précaution si vous téléchargez un son à partir d'une URL qui utilise des redirections HTTP côté serveur. Flash Player ou AIR tente d’extraire les fichiers de régulation correspondant à la propriété url de l’objet URLRequest transmis à Sound.load(). Si le fichier audio final provient d'une URL différente en raison de redirections HTTP, les fichiers de régulation initialement téléchargés peuvent ne pas être applicables à l'URL finale du son, autrement dit l'URL à prendre en compte dans les décisions relatives à la sécurité.

La solution ci-après peut vous permettre de résoudre ce problème. Après la réception d'un événement progress ou complete, vous pouvez examiner la valeur de la propriété Sound.url qui contient l'URL finale du son. Appelez ensuite la méthode Security.loadPolicyFile() en vous basant sur l'URL finale du son pour calculer l'URL du fichier de régulation. Enfin, interrogez Sound.id3 jusqu'à ce qu'aucune exception ne soit renvoyée.

Ceci ne s'applique pas au contenu dans le sandbox de l'application AIR. Le contenu dans le sandbox de l'application a toujours un accès par programmation au contenu sonore, quelle que soit son origine.

Pour plus d'informations sur les fichiers de régulation, consultez le chapitre « Sécurité de Flash Player » du manuel Programmation avec ActionScript 3.0.

Voir aussi

Détails du constructeur
SoundLoaderContext()Constructeur
public function SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9

Crée un objet SoundLoaderContext.

Paramètres
bufferTime:Number (default = 1000) — Durée, en secondes, de préchargement dans une mémoire tampon d'un son en flux continu avant que la diffusion ne commence.
 
checkPolicyFile:Boolean (default = false) — Indique si l'existence d'un fichier de régulation d'URL doit être vérifiée après le chargement de l'objet (true) ou non.

Exemple

Dans l'exemple suivant, le tampon des données audio devant être chargées est défini sur trois secondes.

Le premier paramètre d'un objet SoundLoaderContext (context) est utilisé pour augmenter la valeur de tampon par défaut d'une seconde à trois secondes. (La valeur est en millisecondes.) Si le second paramètre de l'objet SoundLoaderContext est défini sur true, Flash Player recherche un fichier de régulation interdomaines lors du chargement de l'objet Ici, il est défini sur la valeur par défaut false, donc aucun fichier de régulation n'est recherché. La méthode load() de l'objet audio utilisera le paramètre de contexte pour s'assurer que le préchargement des données audio en flux continu dans un tampon prendra trois secondes avant que ces données ne commencent à être diffusées. L'objet URLRequest détermine l'emplacement du fichier, qui correspond à un podcast d'Adobe. Si une erreur IOErrorEvent.IO_ERROR se produit pendant le chargement du fichier audio, la méthode errorHandler() est invoquée.

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.media.SoundLoaderContext;
    import flash.events.IOErrorEvent;
    
    public class SoundLoaderContextExample extends Sprite {

        public function SoundLoaderContextExample() {
            var snd:Sound = new Sound();
            var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
            var context:SoundLoaderContext = new SoundLoaderContext(3000, false);

            snd.load(req, context);
            snd.play();      
 
            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
        }

        private function errorHandler(errorEvent:IOErrorEvent):void {
            trace("The sound could not be loaded: " + errorEvent.text);
        }

    }
}