IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multimédia Java Discussion :

jouer des sons tout en jouant


Sujet :

Multimédia Java

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut jouer des sons tout en jouant
    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



    ...

  2. #2
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    je connais une classe AudioClip plus simple. Mais pourrais-tu montrer le code qui gere l evenement ?

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut
    par exemple dans cette classe que ci dessus , dans la fonction collision, quand il y a une collision, je veux qu'on entende un son

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    /*
     * scene.java
     *
     * Created on February 11, 2007, 1:46 PM
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    package laboratoire3;
     
    import javax.swing.*;
    import java.awt.*;//pour la méthode paint
    import java.awt.geom.AffineTransform;
    import java.util.*;
    import java.util.Vector;
    import java.awt.geom.Point2D;
    import javax.swing.JOptionPane;
    import java.io.*;
    import java.applet.*; 
    import java.net.URL;
    import java.awt.image.BufferStrategy;
    import java.awt.image.BufferedImage;
     
    /**
     *
     * @author miled
     */
    public class JScene extends javax.swing.JPanel {
     
         private ImageIcon image;
     
         private Vector<JObject> elements;
         private Vector<String> Hscores ;
         private int score;
         private int vie;
         private boolean pause=false ;
         private BufferedImage background;
         private int t;
     
        /** Creates a new instance of scene */
        public JScene(String nomimage) {
     
            image = new ImageIcon(getClass().getResource(nomimage));
            // Le vecteur et les objets
            elements = new Vector<JObject>();
     
            Hscores= new Vector<String>();
            t=0;
     
     
     
     
     
        }
     
        public void nouvelleScene()
            {
     
            // Ajouter un Raptor
             score=0;
             vie=100;
             JRaptor rap = new JRaptor();
             elements.add(rap);
     
            }
        public void recommencer(){
     
            elements.clear();
            score=0;
            vie=100;
            JRaptor rap = new JRaptor();
            elements.add(rap);
        }
     
        public void setpause(boolean b){
            pause=b;
        }
        public boolean getpause(){
            return pause;
        }
     
        public void animer(double dt)
        {
         // animer le vecteur
            for(int i=0;i<elements.size();i++)
                {elements.get(i).animer(dt);}
     
        }
     
     
       public void test(){
     
       }
     
     
        public void ennemies(){
     
            //int cmp=10;
     
     
            int x;
            Random r = new Random();
     
                x = r.nextInt(1000);
                Point2D.Double position = new Point2D.Double(); 
                position.setLocation(x,0.0);
                JEnemy En = new JEnemy(position);
                elements.add(En);
     
     
                for (int i=0 ; i<elements.size() ; i++){
     
                    if(elements.get(i) instanceof JEnemy){
     
                        if(elements.get(i).getPosition().getY()>610){
     
                            elements.remove(i);
                        }
     
                    }
     
     
                }
     
     
     
        }
     
         public void missiles(){
     
            Point2D.Double position = new Point2D.Double();  
     
            position.setLocation(elements.get(0).getPosition().getX()+35,elements.get(0).getPosition().getY());
     
     
            JMissileRaptor Mi = new JMissileRaptor(position);
            elements.add(Mi);
     
     
     
     
     
     
     
            /**sound player = new sound("bassdrumhard001.wav");
            InputStream stream = new ByteArrayInputStream(player.getSamples()); 
            player.play(stream);*/
            repaint();
     
            for (int i=0 ; i<elements.size() ; i++){
     
                    if(elements.get(i) instanceof JMissileRaptor){
     
                        if(elements.get(i).getPosition().getY()<0){
     
                            elements.remove(i);
                        }
     
                    }
     
     
                }
     
     
     
        }
     
        public void missilesEn(){
     
            Point2D.Double position = new Point2D.Double();  
     
            for(int i=0 ; i<elements.size();i++){
                if(elements.get(i) instanceof JEnemy){
                    if((elements.get(i).getPosition().getY()>109 && elements.get(i).getPosition().getY()<111) || (elements.get(i).getPosition().getY()>309 && elements.get(i).getPosition().getY()<311)) {
                        position.setLocation(elements.get(i).getPosition().getX()+20,elements.get(i).getPosition().getY());
                        JMissileEnemy Mi = new JMissileEnemy(position);
                        elements.add(Mi);
                    }
                }
            }
     
     
            repaint();
     
            for (int i=0 ; i<elements.size() ; i++){
     
                    if(elements.get(i) instanceof JMissileEnemy){
     
                        if(elements.get(i).getPosition().getY()>610){
     
                            elements.remove(i);
                        }
     
                    }
     
     
                }
     
     
     
        } 
     
     
     
        public void Setpos( String mvt ){
            for(int i=0;i<elements.size();i++){
                if(elements.get(i) instanceof JRaptor){
                    if(mvt.equals("L") && elements.get(i).getPosition().getX() >0){
                        elements.get(i).setPosition(elements.get(i).getPosition().getX()-10,elements.get(i).getPosition().getY());
                    }
                    if(mvt.equals("R") && elements.get(i).getPosition().getX() <1190){
                        elements.get(i).setPosition(elements.get(i).getPosition().getX()+10,elements.get(i).getPosition().getY());
                    }
                    if(mvt.equals("U") &&  elements.get(i).getPosition().getY() >0){
                        elements.get(i).setPosition(elements.get(i).getPosition().getX(),elements.get(i).getPosition().getY()-10);
                    }
                    if(mvt.equals("D") && elements.get(i).getPosition().getY() <610){
                        elements.get(i).setPosition(elements.get(i).getPosition().getX(),elements.get(i).getPosition().getY()+10);
                    }
                }
            }
            repaint();
        }
     
     
     
        public void paintComponent(Graphics g) {
     
              super.paintComponent(g);
     
     
     
                Graphics2D g2d = (Graphics2D) g;
                // Dessiner l'arrière plan
                double scalex = (double)this.getWidth()  / (double)image.getIconWidth();
                double scaley = (double)this.getHeight() / (double)image.getIconHeight();
                g2d.scale(scalex,scaley);
     
                /**background = new BufferedImage(image.getIconWidth(),image.getIconHeight(),BufferedImage.TYPE_INT_ARGB);
                g2d.setPaint(new TexturePaint(background, new Rectangle(0,t,background.getWidth(),background.getHeight())));
                g2d.fillRect(0,0,getWidth(),getHeight());
                g2d = background.createGraphics();*/
                g2d.drawImage(image.getImage(),0,0,image.getImageObserver());
                g2d.scale(1/scalex,1/scaley);
                g2d.setColor(Color.LIGHT_GRAY);
                g.setFont( new Font( "", Font.ITALIC, 24 ) );
                g2d.drawString( "Vies : "+vie+"%", 10, 30 );
                g2d.drawString( "Scores : "+score, 10, 60 );
                g2d.drawString( "Missiles : 000 ", 10, 90 );
     
     
                // Afficher le vecteur
                for(int i=0;i<elements.size();i++)
                {
                    elements.get(i).paintComponent(g);
                }
     
                t++;
     
         }
     
        public void collisions(){
     
            for(int i=0;i<elements.size();i++){
     
                if(elements.get(i) instanceof JRaptor)
                {
                    for(int j=0;j<elements.size();j++){
                        if(elements.get(j) instanceof JMissileEnemy)
                        {
                            if(elements.get(i).getRec().contains(elements.get(j).getRec())){
                                vie-=5;
                                elements.remove(j);
     
                            }
                        }
                        else if (elements.get(j) instanceof JEnemy){
                            if(elements.get(i).getRec().contains(elements.get(j).getRec())){
                                elements.remove(j);
                                vie-=8;
                            }
     
                        }
                    }
                }
                else if(elements.get(i) instanceof JEnemy){
                    for(int j=0;j<elements.size();j++){
                        if(elements.get(j) instanceof JMissileRaptor){
     
                            if(elements.get(i).getRec().contains(elements.get(j).getRec())){
                                elements.remove(i);
                                elements.remove(j-1);
                                score+=10;
     
                            }
                        }
                    }
     
                }
            }
        }
     
     
        public boolean finjeu(){
            if(vie<0){
                elements.clear();
     
                JOptionPane.showMessageDialog( null, "Game Over \n score : "+score, "Game over", JOptionPane.INFORMATION_MESSAGE );
                try{    
                    FileOutputStream out = new FileOutputStream(("highscores.sav"),true);
                    ObjectOutputStream s = new ObjectOutputStream(out);
                    String tmp = score+"\n";
                    //System.out.println(tmp);
                    s.writeObject(tmp); 
     
                    out.flush();
                    out.close();
                }catch (Exception e){
    			System.out.println(e.toString());
    		}
     
                return true;
     
            }
            return false;
        }
     
       public void HS(){
     
        String chaine="";
        String fichier ="highscores.sav";
        pause = true;
     
    		//lecture du fichier texte	
    		try{
    			FileInputStream in = new FileInputStream(fichier);
                            ObjectInputStream s = new ObjectInputStream(in);
                            String ligne;    
    			if((ligne=(String)s.readObject())!=null)
     
    			while ((ligne=(String)s.readObject())!=null){
    				//System.out.println(ligne);
    				chaine+=ligne+"\n";
    			}
                            System.out.println(chaine);
    			s.close(); 
    		}		
    		catch (Exception e){
    			System.out.println(e.toString());
    		}
                                System.out.println(chaine);
        JOptionPane.showMessageDialog( null, chaine , "Highscores", JOptionPane.INFORMATION_MESSAGE );
       }
     
     
    }

    j'ai essayé la classe en haut dans le premier message , mais ca met les animation en pause quand le son s'active

    je sais pas comment faire !


    merci



    ...

  4. #4
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    tu peux commenter le code de maniere plus detaille stp? par exemple on ne trouve pas la boucle de l algorithme general, où se trouve le Timer?
    pour les sons il faut donc lancer un processus supplementaire en parallele des graphiques.

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par broumbroum
    tu peux commenter le code de maniere plus detaille stp? par exemple on ne trouve pas la boucle de l algorithme general, où se trouve le Timer?
    pour les sons il faut donc lancer un processus supplementaire en parallele des graphiques.




    ok je reviendrai apres pour t'expliquer ce que je fais , j'utilise pas un timer en fait, brb



    ...

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Points : 123
    Points
    123
    Par défaut
    bon je n'ai pas commenté le code , (c'est trop long , meme si a la fin je serai obligé de le commenter...) mais je t'explique un peu comment ca marche

    les animation des jeu sont declanchés par 2 thread qui sont dans la classe fenetre (qui extends JFrame)

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    /*
     * Main.java
     *
     * Created on February 11, 2007, 1:46 PM
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    package laboratoire3;
     
    import javax.swing.*;
    import java.awt.*;//pour la méthode paint
    import java.awt.event.*;
    import java.awt.image.*;
     
    /**
     *
     * @author miled
     */
    public class fenetre extends JFrame implements KeyListener, MouseListener {
     
        private static JScene scene;
        private Demon dem;
        private enemies enn;
        private JMenuItem poprestart;
        private int t =0;
     
     
        /** Creates a new instance of Main */
        public fenetre() {
     
         super("INF4100 - Raptor Game");
     
     
         scene = new JScene("background.jpg");
     
         Image icone = Toolkit.getDefaultToolkit().getImage("icone.png");
         this.setIconImage(icone);
     
     
         // le conteneur, le panel  et la groupe des buttons
         Container conteneur = getContentPane();
         conteneur.add(scene,BorderLayout.CENTER);
     
     
         JMenuBar menubar = new JMenuBar() ;
     
         this.setJMenuBar(menubar);
     
         JMenu fichier = new JMenu("Fichier");
         JMenu fichier1 = new JMenu("Édition");
         JMenu fichier2 = new JMenu("Jouer");
         JMenu fichier3 = new JMenu("AIDE");
         fichier.setMnemonic(KeyEvent.VK_F);
     
         final JMenuItem fnouveau = new JMenuItem("Nouveau");
         final JMenuItem fscores = new JMenuItem("Scores");
         JMenuItem fhs = new JMenuItem("Éffacer HS");
         JMenuItem fplay = new JMenuItem("Jouer");
         JMenuItem fhelp = new JMenuItem("Aide");
         final JMenuItem fquit = new JMenuItem("Quitter");
         fnouveau.addActionListener(
                 new ActionListener() {
     
                    public void actionPerformed( ActionEvent e){
                        if(e.getSource()==fnouveau){
                             scene.nouvelleScene();
                             scene.ennemies();
                             dem = new Demon();
                             dem.start();
                             enn = new enemies();
                             enn.start();
     
                        }
     
                    }
                });
         fquit.addActionListener(
                 new ActionListener() {
     
                    public void actionPerformed( ActionEvent e){
                        if(e.getSource()==fquit)
                            System.exit(0);
                    }
                });       
         fscores.addActionListener(
                 new ActionListener() {
     
                    public void actionPerformed( ActionEvent e){
                        if(e.getSource()==fscores){
                            scene.HS();
     
                        }
                    }
                });              
     
     
     
     
         // Creer le menu bar
         fichier.add(fnouveau);
         fichier.add(fquit);
         fichier1.add(fscores);
         fichier1.add(fhs);
         fichier2.add(fplay);
         fichier3.add(fhelp);
         menubar.add(fichier);
         menubar.add(fichier1);
         menubar.add(fichier2);
         menubar.add(fichier3);
     
     
         this.setLocation(20,20);
         this.setSize(500,500);
     
     
     
         // Démarer la fenetre
         this.setVisible(true);
         this.setExtendedState(this.MAXIMIZED_BOTH);
     
        // Le programme d'annimation
     
     
         this.addKeyListener( this );  
         this.addMouseListener( this );
     
     
     
         scene.test();
     
     
         repaint();
     
        }
     
           public void keyPressed( KeyEvent event ){
     
     
                if(event.getKeyCode()==KeyEvent.VK_LEFT){                
                    scene.Setpos("L");
                }
                else if(event.getKeyCode()==KeyEvent.VK_RIGHT){
                    scene.Setpos("R");
                }
                else if(event.getKeyCode()==KeyEvent.VK_DOWN){
                    scene.Setpos("D");    
                }
                else if(event.getKeyCode()==KeyEvent.VK_UP){
                    scene.Setpos("U");
                }
                else if(event.getKeyCode()==KeyEvent.VK_CONTROL){
                    scene.missiles();
                }
     
     
           }
     
           public void keyReleased( KeyEvent event ){
     
           }
     
           public void keyTyped( KeyEvent event ){
     
           }
     
           public void mousePressed( MouseEvent e){
     
               if(SwingUtilities.isRightMouseButton(e)){
                     JPopupMenu pop = new JPopupMenu();
                     poprestart = new JMenuItem("Recommencer");
                     final JCheckBox P = new JCheckBox("Pause");
                     P.setSelected(false);
     
                     P.addItemListener(new java.awt.event.ItemListener()
                     {
                        public void itemStateChanged(ItemEvent e)
                        {
                            Object source = e.getItemSelectable();
                            if (source == P) {
                                P.setSelected(true);
                            }
                            if (e.getStateChange() == ItemEvent.DESELECTED){
     
                            }
                        }
                    });
     
     
     
                     pop.add(poprestart);
                     pop.add(P);
                     pop.show(e.getComponent(),e.getX(), e.getY() );
                     ItemHandler handler = new ItemHandler();
                     poprestart.addActionListener(handler);
     
     
     
               }
           }
           public void mouseClicked( MouseEvent e){
     
           }
           public void mouseReleased( MouseEvent e){
     
           }
           public void mouseEntered( MouseEvent e){
     
           }
           public void mouseExited( MouseEvent e){
     
           }
     
           private class ItemHandler implements ActionListener {
     
                 public void actionPerformed( ActionEvent event ){
                     if ( event.getSource() == poprestart){
     
                             scene.recommencer();
                             scene.ennemies();
                             dem = new Demon();
                             dem.start();
                             enn = new enemies();
                             enn.start();
                     }
     
     
                 }
           }
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
     
            fenetre fenetreRaptorGame = new fenetre();
     
            fenetreRaptorGame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            fenetreRaptorGame.addWindowListener(
                new WindowAdapter()
                {
                    public void windowClosing(WindowEvent e)
                    {
     
                   		System.exit(0);
                    }
                }
            );
     
        }
     
     
         class Demon extends Thread{
            public Demon(){}
     
            public void run(){
                double dt = 0.2;
                if(scene.getpause()==false){
                    while(true)
                        {
     
                        // Afficher le vecteur
                        scene.missilesEn();
                        scene.collisions();
                        //System.out.println(t); 
                        if(t>22000){
     
                           dt+=0.05;
                           t=0;
                        }
                        scene.animer(dt);
                        if(scene.finjeu()==true){
                            enn.stop();
                            dem.stop();
                        }
                        repaint();
                        try{ Thread.sleep(20);} catch(InterruptedException e){;}
                        }
                }
     
            }
        }
     
         class enemies extends Thread{
            public enemies(){}
            private int tt=4000;
            public void run(){
                if(scene.getpause()==false){
                    while(true)
                        {
     
                        t+=tt;
     
                        if(t>25000){
     
                           tt-=500;
                           t=0;
                        }
                        scene.ennemies();
                        repaint();
                        try{ Thread.sleep(tt);} catch(InterruptedException e){;}
                        }
                }
            }
        }
     
     
     
     
    }

    les 2 threads sont a la fin de cette classe (dont ne regarde pas le teste) , il apellent des fonctions de la classe scene (les fonctions qui affichent les ennemies , les missiles , testent les collisions ... )


    est ce claire ?



    ...

  7. #7
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    Tu pourrais implementer l interface Runnable dans la classe Sound, ainsi tu peux lancer le tout en synchro.

Discussions similaires

  1. [Audio] [javax.sound]ou[MIDI]Jouer des sons "à la volée"
    Par Claythest dans le forum Multimédia
    Réponses: 8
    Dernier message: 12/12/2008, 16h12
  2. Jouer des sons
    Par christophe63 dans le forum Signal
    Réponses: 9
    Dernier message: 05/01/2007, 16h59
  3. [VB.Net 2003] jouer des sons
    Par damned3 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/12/2006, 05h30
  4. Comment jouer des sons dans un programme ???
    Par aldur_disciple dans le forum MFC
    Réponses: 8
    Dernier message: 17/08/2005, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo