Contrôler le volume et la balance d'un son en ActionScript 3 (AS3)
Grâce à la classe SoundTransform, nous allons pouvoir contrôler le son au niveau du volume et de la balance notamment.
Nous utilisons ici deux boutons pour régler un volume faible et une balance gauche. Nous stockons les propriétés actuelles du canal dans l'objet SoundTransform puis nous indiquons la nouvelle valeur du volume ou de la balance. Et enfin, nous appliquons ces transformations grâce à la propriété soundTransform de l'objet SoundChannel.
-
// création du conteneur du son
-
var conteneurSon:Sound = new Sound();
-
// url du fichier mp3
-
var fichierMP3:URLRequest = new URLRequest("sons/monSon.mp3");
-
// Objet permettant de contrôler le son
-
var canal:SoundChannel = new SoundChannel();
-
// Objet permettant de réaliser les modifications du son
-
var controle:SoundTransform;
-
// chargement du mp3 dans le conteneur
-
conteneurSon.load(fichierMP3);
-
// Lecture du son et stockage dans le canal
-
canal = conteneurSon.play();
-
// Bouton de volume
-
var volumeFaible:SimpleButton = new SimpleButton();
-
var normal:TextField = new TextField();
-
var survol:TextField = new TextField();
-
var clic:TextField = new TextField();
-
normal.text = survol.text = clic.text = "Volume faible";
-
survol.textColor = 0xFF0000;
-
clic.textColor = 0x0000FF;
-
with(volumeFaible)
-
{
-
upState = normal;
-
overState = survol;
-
downState = clic;
-
hitTestState = normal;
-
x = 50;
-
y = 20;
-
}
-
// Clic sur le volumeFaible
-
function clicVolFaible(evt:MouseEvent):void
-
{
-
// On stocke les propriétés du canal dans un objet SoundTransform
-
controle = canal.soundTransform;
-
// Le volume peut être réglé entre 0 (faible) et 1 (fort)
-
controle.volume = 0.3;
-
// On applique le nouveau volume au canal
-
canal.soundTransform = controle;
-
}
-
// Evénement click du bouton est défini
-
volumeFaible.addEventListener(MouseEvent.CLICK, clicVolFaible);
-
// Le bouton est affiché
-
this.addChild(volumeFaible);
-
// Balance à gauche
-
var balanceGauche:SimpleButton = new SimpleButton();
-
var normal2:TextField = new TextField();
-
var survol2:TextField = new TextField();
-
var clic2:TextField = new TextField();
-
normal2.text = survol2.text = clic2.text = "Enceinte gauche";
-
survol2.textColor = 0xFF0000;
-
clic2.textColor = 0x0000FF;
-
with(balanceGauche)
-
{
-
upState = normal2;
-
overState = survol2;
-
downState = clic2;
-
hitTestState = normal2;
-
x = 150;
-
y = 20;
-
}
-
// Clic sur le volumeMoyen
-
function balGauche(evt:MouseEvent):void
-
{
-
// On stocke les propriétés du canal dans un objet SoundTransform
-
controle = canal.soundTransform;
-
// La balance peut être réglé entre -1 (gauche) et 1 (droite)
-
controle.pan = -1;
-
// On applique la nouvelle balance au canal
-
canal.soundTransform = controle;
-
}
-
// Evénement click du bouton est défini
-
balanceGauche.addEventListener(MouseEvent.CLICK, balGauche);
-
// Le bouton est affiché
-
this.addChild(balanceGauche);
;)
Je suis Antony Chauviré, développeur sur la Flash Platform.
Hello, si une personne voit ce texte et sait comment lire un son venant du microphone en traitant tout du côté client, je suis tres preneur ;), et si ce n'est pas possible, je suis aussi preneur de l'info.
Merci
Bonjour j'aurai aimer savoir comme faire un effet de fade out sur le volume du son afin d'éviter les cassures sonnores.
Voici mon code (je débute en actionscript) :
Merci à tous et bravo pour ce site ^^
Ps : je n'ai pas la solution pour intéragir avec le microphone :s
bonjour
si je peux me permettre:
sur la ligne 31 il manque "function"
merci pour vos explications
a bientot