Salut

encore dans le cadre de mon ptit jeu

je veux que quand on tire un missile par exemple on entend le son boom , j'ai un fichier boom.wav a jouer !

j'ai trouvé une classe sound que j'ai essayé , ca marche , mais quand je tire le missile , jentend le boom , mais ca arrete les animations des aliens et du canon et tout ca s'arrete , quand le son fini tout redevient normal , donc ce n'est pas bon !

tenez si vous voulez la classe sound

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 import java.io.*;
 import javax.sound.sampled.*; 
 
 
 public class sound {
 
     private AudioFormat format;
     private byte[] samples;
 
     public sound(String filename){
         try{
             AudioInputStream stream = AudioSystem.getAudioInputStream(new File(filename));
            format = stream.getFormat();
             samples = getSamples(stream);
         }
         catch (UnsupportedAudioFileException e){
             e.printStackTrace();
         }
         catch (IOException e){
            e.printStackTrace();
         }
     }
 
     public byte[] getSamples(){
        return samples;
     }
 
     public byte[] getSamples(AudioInputStream stream){
 
        int length = (int)(stream.getFrameLength() * format.getFrameSize());
        byte[] samples = new byte[length];
        DataInputStream in = new DataInputStream(stream);
        try{
             in.readFully(samples);
        }
        catch (IOException e){
             e.printStackTrace();
         }
        return samples;
     }
 
 
     public void play(InputStream source){
         // 100 ms buffer for real time change to the sound stream
         int bufferSize = format.getFrameSize() * Math.round(format.getSampleRate() / 10);
         byte[] buffer = new byte[bufferSize];
         SourceDataLine line;
         try{
             DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
             line = (SourceDataLine)AudioSystem.getLine(info);
             line.open(format, bufferSize);
         }
         catch (LineUnavailableException e){
             e.printStackTrace();
         return;
         }
            line.start();
         try{
             int numBytesRead = 0;
             while (numBytesRead != -1){
             numBytesRead = source.read(buffer, 0, buffer.length);
            if (numBytesRead != -1)
                line.write(buffer, 0, numBytesRead);
            }
         }
         catch (IOException e){
            e.printStackTrace();
         }
            line.drain();
            line.close();
         } 
 
    }

aussi j'ai vu le javaplayer , mais ca ne marchera pas parceque je vais rendre le tp au prof , qui n'aura pas ca installé sur son pc


donc ya t'il un moyen pour corrigé la classe sound , ou peut etre une meilleure methode pour faire ca ?


merci



...