Lier un fichier son à un objet graphique
Bonjour,
Le code ci-joint permet d'afficher sous forme d'applet un certain nombre de rectangles colorés dans une fenêtre. A chaque rectangle doit correspondre un signe (ou lettre) et un son du français. Par exemple, au premier rectangle de la partie supérieure du tableau, de couleur blanche, correspondront le signe et le son "a". Au second rectangle, en rouge, correspondront le signe et le son "o" et au troisième rectangle (en vert), le son et le signe "i". Le cinquième rectangle (en jaune) correspond au son et au signe "r" (et ainsi de suite). Au rectangle de couleur magenta, dans la partie inférieure du tableau, correspondront le signe et le son "m".
En cliquant successivement sur les rectangles blanc, magenta et vert, on obtient le mot "ami". La combination des rectangles magenta, blanc et vert produira le mot "mai". Si l'on introduit la consonne "r" on pourra produire le mot "miroir", et ainsi de suite jusqu'à épuisement des possibilités du tableau.
A titre d'exemple,voici le code qui permet de produire le son "a", également dans un applet (les fichiers .class et .html ne sont pas inclus) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| import java.applet.*;
import java.awt.*;
public class aApplet extends Applet {
public void init() {
AudioClip a=getAudioClip(getDocumentBase(),"a.wav");
a.play();
}
} |
Première question:
Comment lier chaque rectangle à son fichier son correspondant et activer celui-ci par une action de la souris tout en faisant apparaître le signe "a" à l'intérieur du rectangle?
Deuxième question:
Comment afficher le mot produit par une combinaison particulière des rectangles dans une zone texte au bas du tableau?
Merci d'avance pour toute suggestion de réponse à ces deux questions.
"<identifier> expected error"
Voici le code complet de "MyApplet.java":
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
public class MyApplet extends Applet implements MouseListener {
/** Map that indexes clips by shapes.
*/
private Map<Rectangle, AudioClip> rectSoundMap = new HashMap<Rectangle, AudioClip>();
/** Creates a new instance.
*/
public MyApplet() {
super();
addMouseListener(this);
}
// Creates a rectangle.
Rectangle rect = new Rectangle(0, 0, 100, 50);
// Gets a clip. See Applet documentation for parameter info.
AudioClip clip = getAudioClip("a.wav");
// Associate the rectangle to the map.
rectSoundMap.put(rect, sound);
/** @inheritDoc
*/
public void mouseClicked(MouseEvent event) {
// Iterate through all available rectangles.
for (Rectangle rect : rectSoundMap.keys()) {
// Verify we're inside.
if (rect.contains(event.getX(), event.getY())) {
// Get clip associated to this rectagle.
AudioClip clip = rectSoundMap.get(rect);
// And play it.
clip.play();
// Exit loop.
break;
}
}
}
} |
Merci d'avance pour votre aide.