AS3/Flash : Player mp3, bouton Play relance plusieurs fois la chanson

Bonjour à tous

J’ai un problème avec un de mes examens que je dois faire pour mes études. Je dois réaliser un player MP3 en flash, mais le bouton Play est cliquable à l’infini et va relancer la chanson en surcouche le nombre de fois qu’on à cliqué.

Une fois la chanson lancée, il faudrai bloquer le bouton Play pour qu’on ne puisse plus recliquer dessus :slight_smile:

Voici mon code (allégé) :


var s:Sound=new Sound();
var sc:SoundChannel=new SoundChannel();
var st:SoundTransform=new SoundTransform();
var position:uint;

btn_play.addEventListener(MouseEvent.CLICK,init);
btn_play.addEventListener(MouseEvent.MOUSE_OVER,over);
btn_play.addEventListener(MouseEvent.MOUSE_OUT,out);
btn_play.buttonMode=true;
btn_play.alpha=0.5;

function init(e:MouseEvent){
	s.load(new URLRequest("son.mp3"));
	sc = s.play();
	btn_play.removeEventListener(MouseEvent.CLICK,init);
	btn_play.addEventListener(MouseEvent.CLICK,lecture);
}

/// fonctions boutons
function stopper(e:MouseEvent){
	sc.stop();
	position=sc.position;
}
function lecture(e:MouseEvent){
	sc = s.play(position);
}


Ben, en Java (je connais pas Flash), je ferais un setEnabled(false) dans l’événement Click du bouton.

Sinon, colle une variable d’état qui vérifie si la chanson est en cours de lecture, puis stoppe là avant?

Ben je suis un peu un manche en flash… j’ai fais ce player a l’aide d’un tuto vidéo… Il na pas pensé a inclure cette fonction, donc je suis un peu le bec dans l’eau maintenant.

Je sais que c’est toujours pénible d’embêter les autres, pour demander de résoudres nous problemes, mais la je n’ai vraiment pas le choix car j’ai aucune notion en AS3 ^^

Désolé pour la réponse tardive.
Il est évident que ton MP3 se relance sans cesse !
Tu élimine bien l’écouteur sur ton bouton lecture mais tu en créé un deuxième quasiment identique.
La variable position est assigné sans valeur, et par défaut elle vaut 0.
Donc -> La première fois, tu lance ta musique “sc = s.play()”, tu arrête l’écouteur et tu en créé un second qui lui aussi lance la musique :
“sc = s.play(position)” ce qui équivaut à “s.play(0)” soit à “s.play()”.

En fait ici, position obtient une valeur lorsque tu stoppe la musique, là la musique reprend là ou elle s’est arrêté lorsque tu reclique sur play.

Donc, soit tu élimine ta fonction lecture (et l’écouteur qui va avec), soit tu transforme ton bouton lecture en bouton pause.

Dans le premier cas, le bouton lecture ne sers plus à rien une fois la musique lancée donc voici un correctif (réduit au strict minimum):


var s:Sound=new Sound();
var sc:SoundChannel=new SoundChannel();

btn_play.addEventListener(MouseEvent.CLICK,init);
btn_stop.addEventListener(MouseEvent.CLICK,stopper);

function init(e:MouseEvent){
	s.load(new URLRequest("mamusique.mp3"));
	sc = s.play();
	btn_play.removeEventListener(MouseEvent.CLICK,init);
}

function stopper(e:MouseEvent){
	sc.stop();
	btn_play.addEventListener(MouseEvent.CLICK,lecture);
}

function lecture(e:MouseEvent){
	btn_play.removeEventListener(MouseEvent.CLICK,lecture);
	sc = s.play();
}

C’est vraiment super de ta part! Ta réponse tombe a pic merci :wink:
J’essaye ca tout de suite

Un peu tard mais j’ai eu le même problème! En bidouillant un peu, voici ce que ça donne.

var s:Sound=new Sound();
var sc:SoundChannel=new SoundChannel();
var st:SoundTransform=new SoundTransform();
var position:uint;

btn_play.addEventListener(MouseEvent.MOUSE_OVER,over);
btn_play.addEventListener(MouseEvent.MOUSE_OUT,out);
btn_play.buttonMode=true;
btn_play.alpha=0.5;
btn_pause.alpha=0;
btn_play.addEventListener(MouseEvent.CLICK,init);

function init(e:MouseEvent){
	s.load(new URLRequest("amelbentvivre.mp3"));
	sc = s.play();
	btn_play.removeEventListener(MouseEvent.CLICK,init);

}

btn_pause.addEventListener(MouseEvent.CLICK,stopper);
btn_pause.addEventListener(MouseEvent.MOUSE_OVER,over);
btn_pause.addEventListener(MouseEvent.MOUSE_OUT,out);
btn_pause.buttonMode=true;
btn_pause.alpha=0.5;

function stopper(e:MouseEvent){
	
	position=sc.position;
	sc.stop();
	btn_play.addEventListener(MouseEvent.CLICK,lecture);
	

function lecture(e:MouseEvent){
	sc = s.play(position);
	btn_play.removeEventListener(MouseEvent.CLICK,lecture);
	}
	
}

function over(e:MouseEvent){
	e.currentTarget.alpha=1;
}
function out(e:MouseEvent){
	e.currentTarget.alpha=0.5;
}

Bonjour, merci pour vos sources, et j’aimerai savoir si il était possible de garder le bouton play & stop et juste d’ajouter la lecteur automatique du son.

Merci de votre réponse future