Package | flash.media |
Classe | public class SoundLoaderContext |
Héritage | SoundLoaderContext Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
de la classe Sound.
Lorsque vous employez cette classe, tenez compte du modèle de sécurité suivant :
- Le chargement et la lecture d’un son ne sont pas autorisés si le fichier appelant se trouve sur un sandbox réseau et que le fichier à charger est local.
- Par défaut, le chargement et la lecture d’un son sont interdits si le fichier appelant est local et tente de charger et de lire un son distant. Pour que cette opération soit possible, un utilisateur doit accorder une autorisation explicite.
- Des restrictions s’appliquent à certaines opérations concernant le son. Tout fichier appartenant à un autre domaine ne peut pas accéder aux données d’un son chargé, sauf si vous implémentez un fichier de régulation d’URL. La propriété
Sound.id3
et les méthodesSoundMixer.computeSpectrum()
,SoundMixer.bufferTime
etSoundTransform()
comptent parmi les API liées au son qui sont soumises à cette restriction.
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 concernant la sécurité, voir la rubrique du Pôle de développement Flash Player : Sécurité (disponible en anglais uniquement).
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 | ||
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object |
Méthode | Défini par | ||
---|---|---|---|
Crée un objet SoundLoaderContext. | SoundLoaderContext | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
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 | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Renvoie la valeur primitive de l’objet spécifié. | Object |
bufferTime | propriété |
public var bufferTime:Number = 1000
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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).
checkPolicyFile | propriété |
public var checkPolicyFile:Boolean = false
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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 régler 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 régler 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é. Flash Player ou AIR exécute les actions suivantes, dans l’ordre indiqué, pour vérifier l’existence d’un fichier de régulation :
- Flash Player ou AIR examine les fichiers de régulation téléchargés au préalable.
- Flash Player ou AIR tente de télécharger tout fichier de régulation en attente spécifié dans les appels de
Security.loadPolicyFile()
. - Flash Player ou AIR tente de télécharger un fichier de régulation à partir de l’emplacement par défaut qui correspond à l’URL du son, autrement dit
/crossdomain.xml
sur le même serveur queURLRequest.url
(l’URL du son est spécifiée dans la propriétéurl
de l’objet URLRequest transmis àSound.load()
ou à la fonction du constructeur Sound()).
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 concernant la sécurité, voir la rubrique du Pôle de développement Flash Player : Sécurité (disponible en anglais uniquement).
Informations complémentaires
Eléments de l’API associés
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, Flash Lite 4 |
Crée un objet SoundLoaderContext.
ParamètresbufferTime: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 ( Comment utiliser cet exemple )
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); } } }
Tue Jun 12 2018, 09:30 AM Z