ActionScript 3 – Programmation séquentielle et orientée objet
260
btLecture.addEventListener(MouseEvent.MOUSE_DOWN,lireSon);
btArret.addEventListener(MouseEvent.MOUSE_DOWN,arreterSon);
function lireSon(evt:MouseEvent) {
piste1 = chainehifi.play();
jauge.addEventListener(Event.ENTER_FRAME,animerJaugeLecture);
}
function arreterSon(evt:MouseEvent) {
piste1.stop();
jauge.removeEventListener(Event.ENTER_FRAME,animerJaugeLecture);
}
function animerJaugeLecture(evt:Event) {
jauge.scaleX = piste1.position/chainehifi.length;
}
Vous remarquerez que nous supprimons l’écouteur qui gère l’événement Event.ENTER_FRAME
lorsque nous cliquons sur le bouton Arrêt : il est en effet inutile de demander à Flash de
chercher à mettre à jour l’affichage de l’échelle de l’occurrence jauge alors qu’il n’y a pas
de changement.
Par ailleurs, n’oubliez pas non plus de prévoir dans la fonction de rappel du gestionnaire
d’événement Event.SOUND_COMPLETE, la suppression de l’écouteur qui gère l’événement
Event.ENTER_FRAME.
Effectuer une pause
Aussi curieux que cela puisse vous paraître, la méthode pause() n’existe pas dans la classe
SoundChannel() ni même dans la classe Sound(). Nous allons donc devoir la programmer.
Rassurez-vous, la technique est extrêmement basique et logique.
Fichier de référence : Chapitre12/son9.fla
Pour cela, il faut utiliser une variable pour mémoriser la position de la tête de lecture au
moment où la lecture du son est interrompue. Lorsque nous reprendrons la lecture du son,
nous utiliserons alors la méthode play() de la classe Sound() en précisant en paramètre
la valeur contenue dans la variable.
var positionTete:Number=0;
var cheminSon:URLRequest = new URLRequest("Instru4.mp3");
var enceinte = new Sound(cheminSon);
var piste1:SoundChannel;
btLecture.addEventListener(MouseEvent.MOUSE_DOWN,lireSon);
function lireSon(evt:MouseEvent) {
if (btLecture.etiquette.text =="Lecture") {
btLecture.etiquette.text ="Pause";
piste1 = enceinte.play(positionTete);
260
btLecture.addEventListener(MouseEvent.MOUSE_DOWN,lireSon);
btArret.addEventListener(MouseEvent.MOUSE_DOWN,arreterSon);
function lireSon(evt:MouseEvent) {
piste1 = chainehifi.play();
jauge.addEventListener(Event.ENTER_FRAME,animerJaugeLecture);
}
function arreterSon(evt:MouseEvent) {
piste1.stop();
jauge.removeEventListener(Event.ENTER_FRAME,animerJaugeLecture);
}
function animerJaugeLecture(evt:Event) {
jauge.scaleX = piste1.position/chainehifi.length;
}
Vous remarquerez que nous supprimons l’écouteur qui gère l’événement Event.ENTER_FRAME
lorsque nous cliquons sur le bouton Arrêt : il est en effet inutile de demander à Flash de
chercher à mettre à jour l’affichage de l’échelle de l’occurrence jauge alors qu’il n’y a pas
de changement.
Par ailleurs, n’oubliez pas non plus de prévoir dans la fonction de rappel du gestionnaire
d’événement Event.SOUND_COMPLETE, la suppression de l’écouteur qui gère l’événement
Event.ENTER_FRAME.
Effectuer une pause
Aussi curieux que cela puisse vous paraître, la méthode pause() n’existe pas dans la classe
SoundChannel() ni même dans la classe Sound(). Nous allons donc devoir la programmer.
Rassurez-vous, la technique est extrêmement basique et logique.
Fichier de référence : Chapitre12/son9.fla
Pour cela, il faut utiliser une variable pour mémoriser la position de la tête de lecture au
moment où la lecture du son est interrompue. Lorsque nous reprendrons la lecture du son,
nous utiliserons alors la méthode play() de la classe Sound() en précisant en paramètre
la valeur contenue dans la variable.
var positionTete:Number=0;
var cheminSon:URLRequest = new URLRequest("Instru4.mp3");
var enceinte = new Sound(cheminSon);
var piste1:SoundChannel;
btLecture.addEventListener(MouseEvent.MOUSE_DOWN,lireSon);
function lireSon(evt:MouseEvent) {
if (btLecture.etiquette.text =="Lecture") {
btLecture.etiquette.text ="Pause";
piste1 = enceinte.play(positionTete);
