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
|
class Main {
static HashSet<ActionListener e> listeners = new HashSet();
static void addActionListener(ActionListener l) {
listeners.add(l);
}
static void removeActionListener(ActionListener l) {
listeners.remove(l);
}
private class PisteSonore implements ActionListener, Runnable {
long startTime; URL file; AudioClip au;
public PisteSonore(String file, long startTime) {
this.startTime = startTime;
this.file = new URL(file);
}
private void load() {
au = Applet.newAudioClip(new URL(getClass().getResource(file)));
}
public void run() {
au.play();
}
public void actionPerformed(ActionEvent e) {
load();
while(System.currentTimeMillis() < startTime) {
// wait
}
new Thread(this).start()
}
}
public static void main(String[] args) {
long start = System.currentTimeMillis() + 5000; // 5 sec. delay
PisteSonore p0 = new PisteSonore("maPiste.aiff", start);
PisteSonore p1 = new PisteSonore("maPiste1.aiff", start);
PisteSonore p2 = new PisteSonore("maPiste2.aiff", start);
PisteSonore p3 = new PisteSonore("maPiste3.aiff", start);
addActionListener(p0); addActionListener(p1); addActionListener(p2);
addActionListener(p3);
for(Iterator i = listeners.iterator(); i.hasNext()) // compte-a-rebours
((PisteSonore)i.next()).actionPerformed(null);
}
} |
Partager