Packageflash.media
Classepublic class Sound
HéritageSound Inheritance EventDispatcher Inheritance Object

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

La classe Sound vous permet de contrôler le son dans une application. Elle vous permet de créer un objet Sound, de charger et de lire un fichier MP3 externe dans cet objet, de fermer le flux audio et d'accéder aux données relatives au son (nombre d'octets que contient le flux, informations sur les métadonnées ID3, etc.). Un contrôle plus précis du son est possible via sa source (objet SoundChannel ou Microphone correspondant) et des propriétés de la classe SoundTransform qui contrôle l'émission du son par les haut-parleurs de l'ordinateur.

Dans Flash Player 10 et les versions ultérieures, ainsi que dans AIR 1.5 et les versions ultérieures, vous pouvez également utiliser cette classe pour gérer le son généré dynamiquement. Dans ce cas, l'objet Sound utilise la fonction que vous affectez à un gestionnaire d'événement sampleData pour interroger les données audio. Le son est lu au fur et à mesure que les données sont récupérées dans un objet ByteArray que vous renseignez avec les données audio. Vous pouvez utiliser la méthode Sound.extract() pour extraire les données audio d'un objet Sound, après quoi vous pouvez les manipuler avant de les réécrire dans le flux pour la lecture.

Pour contrôler des sons imbriqués dans un fichier SWF, utilisez les propriétés de la classe SoundMixer.

Remarque : l'API son d'ActionScript 3.0 est différente de celle d'ActionScript 2.0. Dans ActionScript 3.0, il est impossible de prendre des objets son et de les classer selon un ordre hiérarchique pour contrôler leurs propriétés.

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 :

Consulter les exemples

Voir aussi

flash.net.NetStream
Microphone
SoundChannel
SoundMixer
SoundTransform
Principes de base de l'utilisation du son
Introduction à l'utilisation du son


Propriétés publiques
 PropriétéDéfini par
  bytesLoaded : uint
[lecture seule] Renvoie le nombre d'octets actuellement disponibles dans cet objet Sound.
Sound
  bytesTotal : int
[lecture seule] Renvoie le nombre total d'octets que contient l'objet Sound.
Sound
 Inheritedconstructor : Object
Référence à l'objet de classe ou à la fonction constructeur d'une occurrence donnée d'un objet.
Object
  id3 : ID3Info
[lecture seule] Donne accès aux métadonnées faisant partie d'un fichier MP3.
Sound
  isBuffering : Boolean
[lecture seule] Renvoie l'état de mise en mémoire tampon des fichiers MP3 externes.
Sound
  length : Number
[lecture seule] Durée du son actuel, en millisecondes.
Sound
 Inheritedprototype : Object
[statique] Référence à l'objet prototype d'un objet de classe ou fonction.
Object
  url : String
[lecture seule] URL à partir de laquelle le son a été chargé.
Sound
Méthodes publiques
 MéthodeDéfini par
  
Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
Crée un objet Sound.
Sound
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement.
EventDispatcher
  
Ferme le flux, ce qui entraîne l'arrêt du téléchargement des données.
Sound
 Inherited
Distribue un événement dans le flux d'événements.
EventDispatcher
  
extract(target:ByteArray, length:Number, startPosition:Number = -1):Number
Extrait les données audio brutes d'un objet Sound.
Sound
 Inherited
Vérifie si des écouteurs sont enregistrés auprès de l'objet EventDispatcher pour un type spécifique d'événement.
EventDispatcher
 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
  
load(stream:URLRequest, context:SoundLoaderContext = null):void
Lance le chargement d'un fichier MP3 externe à partir de l'URL spécifiée.
Sound
  
play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel
Crée un objet SoundChannel pour lire le son.
Sound
 Inherited
Indique si la propriété spécifiée existe et est énumérable.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Supprime un écouteur de l'objet EventDispatcher.
EventDispatcher
 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
 Inherited
Vérifie si un écouteur d'événement est enregistré auprès de cet objet EventDispatcher ou de ses ancêtres pour le type d'événement spécifié.
EventDispatcher
Evénements
 Evénement Synthèse Défini par
 Inherited[Evénement de diffusion] Distribué lorsque l'application Flash Player obtient le focus du système d'exploitation et devient active.EventDispatcher
  Distribué lorsque le chargement de données aboutit.Sound
 Inherited[Evénement de diffusion] Distribué lorsque l'application Flash Player ou AIR perd le focus du système d'exploitation et devient inactive.EventDispatcher
  Distribué par un objet Sound lorsque des données ID3 sont disponibles pour un son MP3.Sound
  Distribué lorsqu'il se produit une erreur d'entrée/sortie entraînant l'échec d'un chargement.Sound
  Distribué lors du démarrage d'une opération de chargement.Sound
  Distribué lors de la réception de données, au fur et à mesure d'un chargement.Sound
  Distribué lorsque le lecteur demande de nouvelles données audio.Sound
Détails de la propriété
bytesLoadedpropriété
bytesLoaded:uint  [lecture seule]

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

Renvoie le nombre d'octets actuellement disponibles dans cet objet Sound. Cette propriété n'est généralement utile que pour les fichiers chargés en externe.



Implémentation
    public function get bytesLoaded():uint
bytesTotalpropriété 
bytesTotal:int  [lecture seule]

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

Renvoie le nombre total d'octets que contient l'objet Sound.



Implémentation
    public function get bytesTotal():int
id3propriété 
id3:ID3Info  [lecture seule]

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

Donne accès aux métadonnées faisant partie d'un fichier MP3.

Les fichiers son MP3 peuvent contenir des balises ID3 qui fournissent des métadonnées sur le fichier. Si le son MP3 que vous chargez à l'aide de la méthode Sound.load() contient des balises ID3, vous pouvez interroger ces propriétés. Seules les balises ID3 qui utilisent le jeu de caractères UTF-8 sont prises en charge.

les balises ID3 2.0, plus particulièrement 2.3 et 2.4. Les tableaux suivants répertorient les balises ID3 2.0 standard et le type de contenu que les balises représentent. La propriété Sound.id3 permet d'accéder à ces balises par le biais du format my_sound.id3.COMM, my_sound.id3.TIME, etc. Le premier tableau décrit les balises auxquelles il est possible d'accéder par le biais du nom de propriété ID3 2.0 ou le nom de propriété ActionScript. Le second tableau décrit les balises ID3 qui sont prises en charge, mais ne possèdent pas de propriétés prédéfinies dans ActionScript.

Balise ID3 2.0 Propriété de la classe Sound correspondante
COMMSound.id3.comment
TALBSound.id3.album
TCONSound.id3.genre
TIT2Sound.id3.songname
TPE1Sound.id3.artist
TRCKSound.id3.track
TYERSound.id3.year

Le tableau suivant décrit les balises ID3 qui sont prises en charge, mais ne possèdent pas de propriétés prédéfinies dans la classe Sound. Pour y accéder, appelez mySound.id3.TFLT, mySound.id3.TIME, etc.

Propriété Description
TFLTType de fichier
TIMEDurée
TIT1Description du groupe de contenus
TIT2Titre/nom du morceau/description du contenu
TIT3Sous-titre/description plus précise
TKEYTouche initiale
TLANLangues
TLENDurée
TMEDType de média
TOALTitre de l'album/du film/du spectacle d'origine
TOFNNom du fichier d'origine
TOLYParoliers/auteurs d'origine
TOPEInterprètes/musiciens d'origine
TORYAnnée de parution d'origine
TOWNPropriétaire du fichier/détenteur de licence
TPE1Interprètes principaux/solistes
TPE2Groupe/orchestre/accompagnement
TPE3Chef d'orchestre/description plus détaillée des musiciens
TPE4Interprété, remixé ou modifié par
TPOSElément d'un ensemble
TPUBEditeur
TRCKNuméro de piste/position dans l'ensemble
TRDADates d'enregistrement
TRSNNom de la station radio Internet
TRSOPropriétaire de la station radio Internet
TSIZTaille
TSRCISRC (international standard recording code - code standard et international d'enregistrement)
TSSELogiciel/matériel et paramètres utilisés pour le codage
TYERAnnée
WXXXStructure de lien URL

Pour utiliser cette propriété, tenez compte du modèle de sécurité de Flash Player :

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 :



Implémentation
    public function get id3():ID3Info

Voir aussi


Exemple
L'exemple suivant lit les informations d'ID3 dans un fichier audio et les affiche dans un champ de texte.

Dans le constructeur, le fichier audio est chargé mais n'est pas défini sur lecture. Ici, le fichier est supposé être dans le répertoire SWF. Le système doit être autorisé à lire les balises ID3 d'un fichier audio chargé. Si le fichier contient des informations ID3 alors que le programme n'est pas autorisé à les lire, un événement Event.ID3 est déclenché et la propriété id3 du fichier audio est renseignée. La propriété id3 contient un objet ID3Info renfermant toutes les informations ID3.

Dans la méthode id3Handler(), les balises ID3 du fichier sont stockées dans id3, un objet de la classe ID3Info. Un champ de texte est instancié pour afficher la liste des balises ID3. La boucle for fait une itération à travers toutes les balises ID3 2.0 et ajoute le nom et la valeur au contenu du champ de texte. L'artiste, le titre de la chanson et le nom de l'album sont également ajoutés via les propriétés (ID3Info) des informations ID3. ActionScript 3.0 et Flash Player 9 et versions ultérieures prennent en charge les balises ID3 2.0, et en particulier 2.3 et 2.4. Si vous faites une itération des propriétés comme dans la boucle for, seules les balises ID3 2.0 apparaissent. Toutefois, les données des versions précédentes sont également stockées dans la propriété id3 de la chanson et sont accessibles via les propriétés de la classe ID3Info. Les balises ID3 1.0 se situent à la fin du fichier alors que les balises ID3 2.0 sont placées au début du fichier. (Il arrive parfois que les balises des versions antérieures et ultérieures soient au même endroit dans le fichier.) Lorsqu'un fichier est encodé avec des balises 1.0 et 2.0 au début et à la fin du fichier, la méthode id3Handler() doit être invoquée deux fois. Elle lit d'abord la version 2.0, puis la version 1.0. Si seule une balise ID3 1.0 est disponible, les informations sont alors accessibles via les propriétés d'informations ID3, telles que id3.songname. Pour ID3 2.0, la propriété id3.TITS récupère le titre de la chanson à l'aide de la nouvelle balise (TITS).

Notez que aucune gestion d'erreur n'est écrite pour cet exemple et que si le contenu ID3 est long, le résultat peut dépasser la zone visible.

package {
    import flash.display.Sprite;
    import flash.media.Sound;
    import flash.net.URLRequest;
    import flash.media.ID3Info;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.Event;

    public class Sound_id3Example extends Sprite {
        private var snd:Sound = new Sound();       
        private var myTextField:TextField = new TextField();

        public function Sound_id3Example() {
            snd.addEventListener(Event.ID3, id3Handler);
            snd.load(new URLRequest("mySound.mp3"));
        }
    
        private function id3Handler(event:Event):void {
            var id3:ID3Info = snd.id3;

            myTextField.autoSize = TextFieldAutoSize.LEFT;
            myTextField.border = true;

            myTextField.appendText("Received ID3 Info: \n");
              
            for (var propName:String in id3) {
                myTextField.appendText(propName + " = " + id3[propName] + "\n");
            }
 
            myTextField.appendText("\n" + "Artist: " + id3.artist + "\n");
            myTextField.appendText("Song name: " + id3.songName + "\n");
            myTextField.appendText("Album: " + id3.album + "\n\n"); 
 
            this.addChild(myTextField);
        }
    }
}
isBufferingpropriété 
isBuffering:Boolean  [lecture seule]

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

Renvoie l'état de mise en mémoire tampon des fichiers MP3 externes. Si la valeur correspond à true, la lecture éventuelle est interrompue pendant que l'objet attend des données supplémentaires.



Implémentation
    public function get isBuffering():Boolean
lengthpropriété 
length:Number  [lecture seule]

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

Durée du son actuel, en millisecondes.



Implémentation
    public function get length():Number
urlpropriété 
url:String  [lecture seule]

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

URL à partir de laquelle le son a été chargé. Cette propriété s'applique uniquement aux objets Sound chargés à l'aide de la méthode Sound.load(). Pour les objets Sound associés à une ressource son de la bibliothèque d'un fichier SWF, la valeur de la propriété url correspond à null.

La première fois que vous appelez Sound.load(), la valeur de la propriété url est d'abord définie null car l'URL finale n'est pas encore connue. La propriété url a une autre valeur dès qu'un événement open est distribué à partir de l'objet Sound.

La propriété url contient l'URL absolue finale à partir de laquelle un son a été chargé. En règle générale, la valeur de la propriété url est identique à la valeur transmise au paramètre stream de Sound.load(). Si vous transmettez une URL relative à Sound.load(), la valeur de la propriété url représente l'URL absolue. En outre, si la requête d'URL d'origine est redirigée par un serveur HTTP, la valeur de la propriété url reflète l'URL finale à partir de laquelle le fichier audio a réellement été téléchargé. La publication d'une URL finale absolue est équivalente au comportement de LoaderInfo.url.



Implémentation
    public function get url():String

Voir aussi

Détails du constructeur
Sound()Constructeur
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)

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

Crée un objet Sound. Si vous transmettez un objet URLRequest valide au constructeur Sound, celui-ci appelle automatiquement la fonction load() pour l'objet Sound. Si vous ne transmettez pas un objet URLRequest valide au constructeur Sound, vous devez appeler la fonction load() pour l'objet Sound, sans quoi le flux ne sera pas chargé.

Une fois la fonction load() appelée pour un objet Sound, vous ne pouvez plus charger de fichier audio dans l'objet. Pour ce faire, créez un autre objet Sound.

Dans Flash Player 10 et les versions ultérieures, ainsi que dans AIR 1.5 et les versions ultérieures, au lieu d'utiliser load(), vous pouvez utiliser le gestionnaire d'événement sampleData pour charger dynamiquement le son dans l'objet Sound.

Paramètres
stream:URLRequest (default = null) — URL pointant vers un fichier MP3 externe.
 
context:SoundLoaderContext (default = null) — Un objet de contexte SoundLoader en option, qui peut définir la durée de mise en mémoire tampon (le nombre minimum de millisecondes de données MP3 à conserver dans la mémoire tampon de l'objet Sound) et peut spécifier si l'application doit rechercher un fichier de régulation interdomaines avant de charger le son.
Détails de la méthode
close()méthode
public function close():void

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

Ferme le flux, ce qui entraîne l'arrêt du téléchargement des données. Une fois la méthode close() appelée, aucune donnée ne peut être lue dans le flux.


Valeur émise
IOError — La fermeture du flux continu s'est révélée impossible ou ce flux n'a pas été ouvert.

Exemple

Dans l'exemple suivant, lorsque l'utilisateur clique sur le bouton Stop, la méthode Sound.close() est appelée et la diffusion du son s'arrête.

Dans le constructeur, un champ de texte est créé pour les boutons Start et Stop. Lorsque l'utilisateur clique sur le champ de texte, la méthode clickHandler() est invoquée. Elle gère le démarrage et l'arrêt du fichier audio. Notez que, selon la connexion réseau ou le moment où l'utilisateur clique sur le bouton Stop, une grande partie du fichier peut déjà avoir été chargée et l'arrêt de la lecture peut demander un certain temps. Un bloc try...catch est utilisé pour capturer toute erreur d'E/S pouvant survenir lors de la fermeture du flux. Par exemple, si le son est chargé depuis un répertoire local et n'est pas diffusé en continu, l'erreur 2029 est capturée et indique « Cet objet URLStream ne possède pas de flux ouvert ».

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;    
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.MouseEvent;
    import flash.errors.IOError;
    import flash.events.IOErrorEvent;

    public class Sound_closeExample extends Sprite {
        private var snd:Sound = new Sound();
        private var button:TextField = new TextField();
        private var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
        
        public function Sound_closeExample() {
            button.x = 10;
            button.y = 10;
            button.text = "START";
            button.border = true;
            button.background = true;
            button.selectable = false;
            button.autoSize = TextFieldAutoSize.LEFT;

            button.addEventListener(MouseEvent.CLICK, clickHandler);

            this.addChild(button);
        }

        private function clickHandler(e:MouseEvent):void {

            if(button.text == "START") {

                snd.load(req);
                snd.play();        

                snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

                button.text = "STOP";
            }
            else if(button.text == "STOP") {
                    
                try {
                    snd.close();
                    button.text = "Wait for loaded stream to finish.";
                }
                catch (error:IOError) {
                    button.text = "Couldn't close stream " + error.message;    
                }
            }
        }
        
        private function errorHandler(event:IOErrorEvent):void {
                button.text = "Couldn't load the file " + event.text;
        }
    }
}
extract()méthode 
public function extract(target:ByteArray, length:Number, startPosition:Number = -1):Number

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: Flash Player 10, AIR 1.5

Extrait les données audio brutes d'un objet Sound.

Cette méthode doit être employée lorsque vous gérez un son généré dynamiquement, à l'aide d'une fonction que vous affectez à l'événement sampleData pour un autre objet Sound. En d'autres termes, vous pouvez utiliser cette méthode pour extraire les données audio d'un objet Sound. Vous pouvez ensuite écrire les données dans le tableau d'octets utilisé par un autre objet Sound pour diffuser en continu les données audio dynamiques.

Les données audio sont placées dans le tableau d'octets cible, à partir de la position actuelle du tableau d'octets. Les données audio sont toujours exposées au format 44100 Hz stéréo. Le type d'échantillon est une valeur 32 bits en virgule flottante qui peut être convertie en nombre par la méthode ByteArray.readFloat().

Paramètres

target:ByteArray — Objet ByteArray qui contient les échantillons audio extraits.
 
length:Number — Nombre d'échantillons audio à extraire. Un échantillon contient à la fois les canaux gauche et droit, c'est-à-dire deux valeurs 32 bits en virgule flottante.
 
startPosition:Number (default = -1) — Echantillon au niveau duquel l'extraction commence. Si vous ne spécifiez pas de valeur, le premier appel à Sound.extract() démarre au début du son ; les appels suivants sans valeur pour startPosition continuent en séquence tout au long du fichier.

Valeur renvoyée
Number — Nombre d'échantillons disponibles dans l'objet Sound.

Voir aussi


Exemple

L'exemple suivant charge un fichier mp3 et utilise la méthode extract() de la classe Sound pour accéder aux données audio.

Les données mp3 sont chargées dans l'objet Sound sourceSnd. Lorsque l'application charge les données mp3, elle appelle la fonction loaded() (le gestionnaire d'événement pour l'événement complete de l'objet sourceSnd). Un deuxième objet Sound, outputSound, est utilisé pour lire les données audio modifiées. L'objet outputSound possède un écouteur d'événement sampleData ; par conséquent, l'objet distribue régulièrement des événements sampleData lorsque vous appelez la méthode play() de l'objet. La méthode upOctave() renvoie un tableau d'octets des données audio modifiées en fonction des données audio source. Elle renvoie les sons plus hauts d'un octave en ignorant les échantillons audio dans les données source. Le gestionnaire d'événement de l'événement sampleData écrit le tableau d'octets renvoyé dans la propriété data de l'objet outputSound. Le tableau d'octets data est ajouté aux données audio de sortie de l'objet outputSound.

Pour tester cet exemple, ajoutez un fichier test.mp3 au même répertoire que le fichier SWF.

var sourceSnd:Sound = new Sound();
var outputSnd:Sound = new Sound();
var urlReq:URLRequest = new URLRequest("test.mp3");

sourceSnd.load(urlReq);
sourceSnd.addEventListener(Event.COMPLETE, loaded);

function loaded(event:Event):void
{
    outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound);
    outputSnd.play();
}

function processSound(event:SampleDataEvent):void
{
    var bytes:ByteArray = new ByteArray();
    sourceSnd.extract(bytes, 4096);
    event.data.writeBytes(upOctave(bytes));
}

function upOctave(bytes:ByteArray):ByteArray
{
    var returnBytes:ByteArray = new ByteArray();
    bytes.position = 0;
    while(bytes.bytesAvailable > 0)
    {
        returnBytes.writeFloat(bytes.readFloat());
        returnBytes.writeFloat(bytes.readFloat());
        if (bytes.bytesAvailable > 0)
        {
            bytes.position += 8;
        }
    }
    return returnBytes;
}
load()méthode 
public function load(stream:URLRequest, context:SoundLoaderContext = null):void

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

Lance le chargement d’un fichier MP3 externe à partir de l’URL spécifiée. Le constructeur Sound appelle automatiquement Sound.load() si vous lui fournissez un objet URLRequest valide. Vous ne devez appeler Sound.load() manuellement que si vous ne fournissez aucun objet URLRequest valide au constructeur Sound, ou si vous lui transmettez la valeur null.

Une fois la fonction load() appelée pour un objet Sound, vous ne pouvez plus charger de fichier audio dans l'objet. Pour ce faire, créez un autre objet Sound.

Pour utiliser cette méthode, tenez compte du modèle de sécurité suivant :

Dans Flash Player versions 10 et ultérieures, si vous utilisez un Content-Type en plusieurs parties (par exemple "multipart/form-data") qui contient un chargement (indiqué par un paramètre "filename" dans un en-tête "content-disposition" au sein du corps POST), l'opération POST est soumise aux règles de sécurité appliquées aux chargements :

Par ailleurs, la syntaxe de tous les Content-Type en plusieurs parties doit être correcte (selon la norme RFC2046). Si la syntaxe s'avère incorrecte, l'opération POST est soumise aux règles de sécurité appliquées aux chargements.

Dans Adobe AIR, le contenu du sandbox de sécurité de l'application (contenu installé avec l'application AIR) n'est pas restreint par ces limites de sécurité.

Pour plus de détails sur la sécurité, consultez les sections suivantes :

Paramètres

stream:URLRequest — URL pointant vers un fichier MP3 externe.
 
context:SoundLoaderContext (default = null) — Un objet de contexte SoundLoader en option, qui peut définir la durée de mise en mémoire tampon (le nombre minimum de millisecondes de données MP3 à conserver dans la mémoire tampon de l'objet Sound) et peut spécifier si l'application doit rechercher un fichier de régulation interdomaines avant de charger le son.


Valeur émise
IOError — Une erreur réseau a entraîné l’échec du chargement.
 
SecurityError — Les fichiers non approuvés au niveau local risquent de ne pas communiquer avec Internet. Pour contourner ce problème, reclassifiez le fichier en tant que fichier local avec accès au réseau ou en tant que fichier approuvé.
 
SecurityError — Si vous tentez de vous connecter à un port généralement réservé. Vous trouverez la liste complète des ports bloqués au chapitre « Restriction des API de réseau » du manuel Programmation avec ActionScript 3.0.
 
IOError — La propriété digest de l'objet stream n'est pas définie sur null. Vous devez définir la propriété digest d'un objet URLRequest uniquement lorsque vous appelez la méthode URLLoader.load() en vue de charger un fichier SWZ (un composant de la plate-forme Adobe).
 
SecurityError — Si vous tentez de vous connecter à un port généralement réservé. Vous trouverez la liste complète des ports bloqués au chapitre « Restriction des API de réseau » du manuel Programmation avec ActionScript 3.0.

Exemple

L'exemple suivant présente la progression du chargement d'un fichier audio.

Dans le constructeur, un objet URLRequest est créé pour identifier l'emplacement du fichier audio, qui correspond à un podcast d'Adobe. Le fichier est chargé dans un bloc try...catch pour capturer toute erreur pouvant survenir pendant son chargement. En cas d'erreur d'E/S, la méthode errorHandler() est également invoquée et le message d'erreur s'inscrit dans le champ de texte réservé au rapport de progression. Pendant la progression d'une opération de chargement, un événement ProgressEvent.PROGRESS est envoyé et la méthode progressHandler() est appelée. Ici, un événement ProgressEvent.PROGRESS est utilisé comme minuteur pour calculer la progression du chargement.

La méthode progressHandler() divise la valeur bytesLoaded transmise avec l'objet ProgressEvent par la valeur bytesTotal pour arriver au pourcentage de données audio chargées. Elle affiche ensuite ces valeurs dans le champ de texte. (Notez que si le fichier est petit, mis en cache ou dans le répertoire local, la progression peut ne pas être perceptible.)

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.ProgressEvent;
    import flash.events.IOErrorEvent;
    
    public class Sound_loadExample extends Sprite {
        private var snd:Sound = new Sound();
        private var statusTextField:TextField  = new TextField();

        public function Sound_loadExample(){

            statusTextField.autoSize = TextFieldAutoSize.LEFT;
            var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
            
            try {
            snd.load(req);
            
            snd.play();
            }
            catch (err:Error) {
                trace(err.message);
            }
 
            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            snd.addEventListener(ProgressEvent.PROGRESS, progressHandler);
                     
            this.addChild(statusTextField);
        }
    
        private function progressHandler(event:ProgressEvent):void {
            var loadTime:Number = event.bytesLoaded / event.bytesTotal;
            var LoadPercent:uint = Math.round(100 * loadTime);
              
            statusTextField.text = "Sound file's size in bytes: " + event.bytesTotal + "\n" 
                                 + "Bytes being loaded: " + event.bytesLoaded + "\n" 
                                 + "Percentage of sound file that is loaded " + LoadPercent + "%.\n";
        }
 
        private function errorHandler(errorEvent:IOErrorEvent):void {
            statusTextField.text = "The sound could not be loaded: " + errorEvent.text;
        }
    }
}
play()méthode 
public function play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel

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

Crée un objet SoundChannel pour lire le son. Cette méthode renvoie un objet SoundChannel, auquel vous accédez pour arrêter le son et régler le volume. (Pour contrôler le volume, la balance horizontale et la balance, accédez à l'objet SoundTransform affecté au canal audio.)

Paramètres

startTime:Number (default = 0) — Position initiale du début de la lecture, en millisecondes.
 
loops:int (default = 0) — Définit le nombre de boucles décrit par un son sur la valeur startTime avant que le canal audio arrête la lecture.
 
sndTransform:SoundTransform (default = null) — Objet SoundTransform d'origine affecté au canal audio.

Valeur renvoyée
SoundChannel — Objet SoundChannel permettant de contrôler le son. Cette méthode renvoie null si vous n'êtes pas équipé d'une carte son ou si aucun canal audio n'est disponible. Le nombre maximal de canaux audio disponibles simultanément est 32.

Voir aussi


Exemple

Dans l'exemple suivant, une fois le fichier chargé, l'utilisateur peut sélectionner la position de départ (heure de démarrage) du fichier audio à l'aide d'une barre graphique.

Le constructeur appelle la méthode Sound.load() pour commencer à charger les données audio. Il appelle ensuite la méthode Sound.play() qui commencera à lire le fichier dès que suffisamment de données seront chargées. La méthode Sound.play() renvoie un objet SoundChannel qui peut être utilisé pour contrôler la lecture du fichier. Le champ de texte affiche les instructions. Pour être sûr que le contenu où l'utilisateur souhaite que le fichier audio commence ait déjà été chargé, un objet Sprite bar est créé et affiché à la fin du chargement du fichier. Un événement Event.COMPLETE est envoyé lorsque le chargement du fichier s'est terminé avec succès, ce qui déclenche la méthode completeHandler(). La méthode completeHandler() crée ensuite la barre et l'ajoute dans la liste d'affichage. (Un objet sprite est utilisé au lieu d'un objet shape pour assurer l'interactivité.) Lorsque l'utilisateur clique sur la barre, la méthode clickHandler() est déclenchée.

Dans la méthode clickHandler(), la position de la coordonnée x du clic de l'utilisateur, event.localX, est utilisée pour déterminer l'emplacement où l'utilisateur souhaite que le fichier démarre. Comme la barre fait 100 pixels et commence à la coordonnée x 100 pixels, il est facile de déterminer le pourcentage de la position. De même, comme le fichier est chargé, la propriété length du fichier audio aura la longueur du fichier terminé, en millisecondes. La position de démarrage du fichier audio est déterminée par la longueur de ce fichier et sa position dans la ligne. Après arrêt de la lecture, le fichier audio redémarre à la position de démarrage sélectionnée, transmise sous forme de paramètre startTime à la méthode play().

package {
    import flash.display.Sprite;
    import flash.display.Graphics;
    import flash.events.MouseEvent;
    import flash.media.Sound;;
    import flash.net.URLRequest;
    import flash.media.SoundChannel;
    import flash.events.ProgressEvent;
    import flash.events.Event;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.IOErrorEvent;
    
    public class Sound_playExample1 extends Sprite {
        private var snd:Sound = new Sound();
        private var channel:SoundChannel = new SoundChannel();
        private var infoTextField:TextField = new TextField();
    
        public function Sound_playExample1() {

            var req:URLRequest = new URLRequest("MySound.mp3");
            
            infoTextField.autoSize = TextFieldAutoSize.LEFT;
            infoTextField.text = "Please wait for the file to be loaded.\n" 
                                + "Then select from the bar to decide where the file should start.";
            
            snd.load(req);               
            channel = snd.play();

            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            snd.addEventListener(Event.COMPLETE, completeHandler);


            this.addChild(infoTextField);
        }

        private function completeHandler(event:Event):void {                
            infoTextField.text = "File is ready.";

            var bar:Sprite = new Sprite();

            bar.graphics.lineStyle(5, 0xFF0000);
            bar.graphics.moveTo(100, 100);
            bar.graphics.lineTo(200, 100);

            bar.addEventListener(MouseEvent.CLICK, clickHandler);

            this.addChild(bar);
        }
    
        private function clickHandler(event:MouseEvent):void {
            
                var position:uint = event.localX;
                var percent:uint = Math.round(position) - 100;   
                var cue:uint = (percent / 100) * snd.length;

                channel.stop();
                channel = snd.play(cue);    
        }

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

Dans l'exemple suivant, le fichier audio est diffusé une ou deux fois, selon si l'utilisateur clique une fois ou deux sur un bouton.

Dans le constructeur, le son est chargé et un simple objet sprite rectangle button est créé. (Un objet sprite est utilisé au lieu d'un objet shape pour assurer l'interactivité.) (Ici, le fichier audio est supposé être dans le même répertoire que le fichier SWF.) (Il n'existe pas de code de gestion d'erreur pour cet exemple.)

Deux écouteurs d'événement sont configurés pour répondre aux simples clics et aux doubles clics de souris. Si l'utilisateur utilise un simple clic, la méthode clickHandler() est invoquée et la lecture du son commence. Si l'utilisateur double-clique sur le bouton, la méthode doubleClickHandler() est invoquée et le fichier audio est diffusé à deux reprises. Le second argument de la méthode play() est défini sur 1, ce qui signifie que le fichier audio reviendra à l'heure de démarrage du fichier et sera diffusé à nouveau. L'heure de démarrage, premier argument, est définie sur 0, ce qui signifie que la lecture du fichier doit commencer au début.

package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.media.Sound;
    import flash.net.URLRequest;

    public class Sound_playExample2 extends Sprite {
        private var button:Sprite = new Sprite(); 
        private var snd:Sound = new Sound();
            
        public function Sound_playExample2() {

            var req:URLRequest = new URLRequest("click.mp3");
            snd.load(req);               
     
            button.graphics.beginFill(0x00FF00);
            button.graphics.drawRect(10, 10, 50, 30);
            button.graphics.endFill();
     
            button.addEventListener(MouseEvent.CLICK, clickHandler);
            button.addEventListener(MouseEvent.DOUBLE_CLICK, doubleClickHandler);
     
            this.addChild(button);
        }

        private function clickHandler(event:MouseEvent):void {
            snd.play();            
        }

        private function doubleClickHandler(event:MouseEvent):void {
            snd.play(0, 2);        
        }
    }
}

L'exemple suivant présente la progression du chargement et de la lecture d'un fichier audio.

Dans le constructeur, le fichier est chargé dans un bloc try...catch pour capturer toute erreur pouvant survenir pendant le chargement de fichier. Un écouteur est ajouté dans l'objet audio et répondra à un événement IOErrorEvent par un appel à la méthode errorHandler(). Un autre écouteur est ajouté pour l'application principale et répondra à un événement Event.ENTER_FRAME, utilisé comme mécanisme de minuterie pour l'affichage de la progression de la lecture. Enfin, un troisième écouteur est ajouté pour le canal audio et répondra à un événement Event.SOUND_COMPLETE (à la fin de la lecture) par un appel à la méthode soundCompleteHandler(). La méthode soundCompleteHandler() supprime également l'écouteur de l'événement Event.ENTER_FRAME.

La méthode enterFrameHandler() divise la valeur bytesLoaded transmise avec l'objet ProgressEvent par la valeur bytesTotal pour arriver au pourcentage de données audio chargées. Le pourcentage de données audio lues peut être déterminé en divisant la valeur de la propriété position du canal audio par la longueur des données audio. Toutefois, si les données audio ne sont pas entièrement chargées, la propriété length de l'objet audio ne présente que la taille des données audio déjà chargées. Une estimation de la taille définitive du fichier audio complet est calculée en divisant la valeur de la propriété length de l'objet audio en cours par la valeur de la propriété bytesLoaded divisée par la valeur de la propriété bytesTotal.

(Notez que si le fichier est petit, mis en cache ou dans le répertoire local, la progression du chargement peut ne pas être perceptible.) De même, le délai qui sépare le démarrage du chargement des données audio et celui du démarrage de la lecture des données chargées est déterminé par la valeur de la propriété SoundLoaderContext.buffertime, qui correspond par défaut à 1 000 millisecondes et peut être réinitialisé.

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    
    public class Sound_playExample3 extends Sprite {
        private var snd:Sound = new Sound();
        private var channel:SoundChannel;
        private var statusTextField:TextField  = new TextField();

        public function Sound_playExample3(){

            statusTextField.autoSize = TextFieldAutoSize.LEFT;

           var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");
            
            try {
                snd.load(req);
            
                channel = snd.play();
            }
            catch (err:Error) {
                trace(err.message);
            }
                    
            snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
            channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
                    
            this.addChild(statusTextField);
        }
    
        private function enterFrameHandler(event:Event):void {    
            var loadTime:Number = snd.bytesLoaded / snd.bytesTotal;
            var loadPercent:uint = Math.round(100 * loadTime);
            var estimatedLength:int = Math.ceil(snd.length / (loadTime));
            var playbackPercent:uint = Math.round(100 * (channel.position / estimatedLength));
      
            statusTextField.text = "Sound file's size is " + snd.bytesTotal + " bytes.\n" 
                                   + "Bytes being loaded: " + snd.bytesLoaded + "\n" 
                                   + "Percentage of sound file that is loaded " + loadPercent + "%.\n"
                                   + "Sound playback is " + playbackPercent + "% complete.";     
        }
 
        private function errorHandler(errorEvent:IOErrorEvent):void {
            statusTextField.text = "The sound could not be loaded: " + errorEvent.text;
        }

        private function soundCompleteHandler(event:Event):void {
            statusTextField.text = "The sound has finished playing.";
            removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }
    }
}
Détails de l'événement
complete Evénement
Type d'objet événement: flash.events.Event
propriété Event.type = flash.events.Event.COMPLETE

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

Distribué lorsque le chargement de données a abouti.

La constante Event.COMPLETE définit la valeur de la propriété type d'un objet événement complete.

Les propriétés de cet événement sont les suivantes :

PropriétéValeur
bubbles false
cancelable false ; il n'existe aucun comportement par défaut à annuler.
currentTarget L'objet qui traite activement l'objet Event avec un écouteur d'événements.
target Objet réseau dont le chargement est terminé.

Voir aussi

id3 Evénement  
Type d'objet événement: flash.events.Event
propriété Event.type = flash.events.Event.ID3

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

Distribué par un objet Sound lorsque des données ID3 sont disponibles pour un son MP3.

La constante Event.ID3 définit la valeur de la propriété type d'un objet événement id3.

Les propriétés de cet événement sont les suivantes :

PropriétéValeur
bubbles false
cancelable false ; il n'existe aucun comportement par défaut à annuler.
currentTarget L'objet qui traite activement l'objet Event avec un écouteur d'événements.
target Objet son chargeant le fichier MP3 pour lequel les données ID3 sont maintenant disponibles. La propriété target ne correspond pas toujours à l'objet de la liste d'affichage qui est associé à l'écouteur d'événement. Utilisez la propriété currentTarget pour accéder à l'objet de la liste d'affichage qui traite actuellement l'événement.

Voir aussi

ioError Evénement  
Type d'objet événement: flash.events.IOErrorEvent
propriété IOErrorEvent.type = flash.events.IOErrorEvent.IO_ERROR

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

Distribué lorsqu'il se produit une erreur d'entrée/sortie entraînant l'échec d'un chargement.

Définit la valeur de la propriété type d'un objet événement ioError.

Les propriétés de cet événement sont les suivantes :

PropriétéValeur
bubbles false
cancelable false ; il n'existe aucun comportement par défaut à annuler.
currentTarget L’objet qui traite activement l’objet Event avec un écouteur d’événements.
errorID Un numéro de référence associé à l'erreur spécifique (AIR uniquement).
target Objet réseau sur lequel l'erreur d'entrée/sortie s'est produite.
text Texte à afficher en tant que message d'erreur.

Voir aussi

open Evénement  
Type d'objet événement: flash.events.Event
propriété Event.type = flash.events.Event.OPEN

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

Distribué lors du démarrage d'une opération de chargement.

La constante Event.OPEN définit la valeur de la propriété type d'un objet événement open.

Les propriétés de cet événement sont les suivantes :

PropriétéValeur
bubbles false
cancelable false ; il n'existe aucun comportement par défaut à annuler.
currentTarget L'objet qui traite activement l'objet Event avec un écouteur d'événements.
target Objet réseau qui a ouvert une connexion.

Voir aussi

progress Evénement  
Type d'objet événement: flash.events.ProgressEvent
propriété ProgressEvent.type = flash.events.ProgressEvent.PROGRESS

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

Distribué lors de la réception de données, au fur et à mesure d'un chargement.

Définit la valeur de la propriété type d'un objet événement progress.

Les propriétés de cet événement sont les suivantes :

PropriétéValeur
bubbles false
bytesLoaded Nombre d'éléments ou d'octets chargés lors du traitement de l'événement par l'écouteur.
bytesTotal Nombre total d'éléments ou d'octets qui seront chargés si le processus de chargement aboutit.
cancelable false ; il n'existe aucun comportement par défaut à annuler.
currentTarget L'objet qui traite activement l'objet Event avec un écouteur d'événements.
target Objet indiquant la progression.

Voir aussi

sampleData Evénement  
Type d'objet événement: flash.events.SampleDataEvent
propriété SampleDataEvent.type = flash.events.Event.SAMPLE_DATA

Version du langage: ActionScript 3.0
Versions du moteur d'exécution: Flash Player 10, AIR 1.5

Distribué lorsque le lecteur demande de nouvelles données audio.


Exemple

L'exemple suivant lit une onde sinusoïdale simple.
var mySound:Sound = new Sound();
function sineWaveGenerator(event:SampleDataEvent):void {
    for ( var c:int=0; c<8192; c++ ) {
        event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
        event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
    }
}

mySound.addEventListener(Event.SAMPLE_DATA,sineWaveGenerator);
mySound.play();

Voir aussi

Exemples Utilisation des exemples
SoundExample.as

L'exemple suivant affiche des informations concernant les événements sonores qui se produisent à l'ouverture et à la lecture d'un fichier MP3. Pour exécuter l'exemple, placez un fichier intitulé MySound.mp3 dans le même répertoire que votre fichier SWF.
package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;

    public class SoundExample extends Sprite {
        private var url:String = "MySound.mp3";
        private var song:SoundChannel;

        public function SoundExample() {
            var request:URLRequest = new URLRequest(url);
            var soundFactory:Sound = new Sound();
            soundFactory.addEventListener(Event.COMPLETE, completeHandler);
            soundFactory.addEventListener(Event.ID3, id3Handler);
            soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            soundFactory.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            soundFactory.load(request);
            song = soundFactory.play();
        }

        private function completeHandler(event:Event):void {
            trace("completeHandler: " + event);
        }

        private function id3Handler(event:Event):void {
            trace("id3Handler: " + event);
        }

        private function ioErrorHandler(event:Event):void {
            trace("ioErrorHandler: " + event);
        }

        private function progressHandler(event:ProgressEvent):void {
            trace("progressHandler: " + event);
        }
    }
}