TUTORIELS 
Flash : lancer un son depuis JavaScript
Comment lancer la lecture d'un fichier MP3 dans Flash, à partir d'un évènement JavaScript.  (11 février 2004)
 
Forums
* Discutez en sur les forums
"Comment émettre un 'bip' en Javascript, comme le fait la fonction 'Beep()' de VBScript ?"

Un problème, une interrogation ? Adressez-vous à la rédaction de JDNet Développeurs

Disons-le d'entrée de jeu : autant que l'on puisse en juger, il n'existe pas de méthode permettant d'émettre un "bip" système à partir de JavaScript.

Cela étant dit, il existe d'autres manières d'émettre des sons à partir d'évènements JavaScript, mais en utilisant des technologies supplémentaires disponibles au sein du navigateur, ou non.
L'une de ces possibilités consiste à faire appel à la balise <embed>, qui le plus souvent utilisera le plug-in QuickTime, mais. De là, on peut jouer du MIDI, des fichiers WAV, ou d'autres formats basiques selon le système et le plug-in disponible.
Une autre consiste à utiliser les capacités Java du navigateur, où l'on peut trouver, au sein de AWT, la méthode beep(), utilisable avec java.awt.Toolkit.getDefaultToolkit().beep();. Le résultat n'est pas garanti...
Comme le titre de cet article le laisse supposer, nous lui préférons une troisième méthode (quoique très proche de la première par son utilisation de balises spécifiques) : un fichier Flash invisible (0*0 pixels) qui répond aux appels JavaScript qui lui sont envoyé, en chargeant et jouant des fichiers MP3. C'est sans doute "trop" pour un simple bip, mais c'est à l'heure actuelle le plus portable - et extensible à d'autres utilisations...

L'animation Flash est placée au sein d'une balise <object>, avec pour id "monFlash" :

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/
pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="1" height="1" id="monFlash" align="">
<param name=movie value="flash-sound-fromJavaScript.swf">
<param name=quality value=high>
<param name=bgcolor value=#FFFFFF>

De son coté, la balise <embed> comporte aussi quelques informations :

<embed src="flash-sound-fromJavaScript.swf" quality=high bgcolor=#FFFFFF width="1" height="1" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" name="monFlash" swliveconnect="true" play="false" loop="false"></embed>


On place ensuite les codes suivants sur les images-clef de l'animation :
Image 1 :
stop;
Image 2 :
monSon1 = new Sound();
monSon1.loadSound("son1.mp3");
monSon1.start();

Image 3 :
monSon2 = new Sound();
monSon2.loadSound("son2.mp3");
monSon2.start();

(etc. si besoin est)

Vous pouvez donner le même nom aux son (plutôt que monSon1, monSon2) pour que deux sons ne se jouent pas en même temps...

Dans la page HTML, on utilise les méthodes JavaScript du plug-in Flash pour déplacer la tête de lecture sur les balises appropriées (notez que GotoFrame part de 0...) :
<input type="submit" name="Submit" value="Son 1" onClick="monFlash.GotoFrame(1); return false">
<input type="submit" name="Submit2" value="Son 2" onClick="monFlash.GotoFrame(2); return false">

 
[ Xavier BorderieJDNet
 
Accueil | Haut de page