2016-09-03 3 views
0

Ich habe ein paar Probleme mit meinem Code, ich möchte ein Dateiarray mischen, das .mp3 Audiodateien enthält und eine Datei abspielen, wenn auf eine Schaltfläche geklickt wird !! Ich habe absolut keine Idee, wie das geht, ich brauche Hilfe, echte Hilfe !! Hier ist mein Code! ..... Es läuft, aber es spielt alle Dateien auf einmal .... Ich möchte es randomisieren, und spielen Sie nur eine der Dateien.Wie man eine Audiodatei von einem Array mischen und abspielen kann

import javax.swing.*; 

import sun.audio.AudioPlayer; 
import sun.audio.AudioStream; 

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 
import java.lang.reflect.Array; 
import java.util.Random; 

public class Quest1 extends JFrame { 

    String word [] = { "C:/Users/HP/Desktop/eclipse/audio.wav", 
      "C:/Users/HP/Desktop/eclipse/baby.wav", 
      "C:/Users/HP/Desktop/eclipse/board.wav", 
      "C:/Users/HP/Desktop/eclipse/bomb.wav", 
      "C:/Users/HP/Desktop/eclipse/gym.wav", 
      "C:/Users/HP/Desktop/eclipse/football.wav", 
      "C:/Users/HP/Desktop/eclipse/school.wav", 
      "C:/Users/HP/Desktop/eclipse/keyboard.wav", 
      "C:/Users/HP/Desktop/eclipse/computer.wav", 
      "C:/Users/HP/Desktop/eclipse/name.wav" }; 


    JButton click;  

    public Quest1() { 

     getContentPane().setBackground(Color.DARK_GRAY); 

     setLayout(new GridBagLayout()); 

     GridBagConstraints g = new GridBagConstraints(); 


     g.anchor = GridBagConstraints.CENTER; 
     g.gridx = 4; 
     g.gridy = 5; 
     g.gridwidth = 2; 
     g.insets = new Insets (50, 2, 2, 2); 
     g.fill = GridBagConstraints.CENTER; 
     fill = new JTextField(15); 
     add (fill, g); 

     g.anchor = GridBagConstraints.CENTER; 
     g.gridx = 4; 
     g.gridy = 8; 
     g.gridwidth = 2; 
     g.insets = new Insets (30, 2,2,2); 
     click = new JButton("Play"); 
     add(click, g); 

     click.addActionListener (new ActionListener(){ 
      public void actionPerformed (ActionEvent x) { 

       Random rand = new Random(); 
        for (int i = 0; i < word.length;) { 
         int random = rand.nextInt(word.length); 
         String temp = word[i]; 
         word [i] = word[random]; 
         word[random] = temp; 

         InputStream in =null; 
         AudioStream out = null; 
          try { 
           in = new FileInputStream(temp); 
          } catch (FileNotFoundException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } 
          try { 
           out = new AudioStream(in); 
          } catch (IOException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          }  
          AudioPlayer.player.start(out); 
        }  
        return; 
      } 
     });  
    } 
} 
+0

Ist Ihr Problem der Sound-Dateien überhaupt zu spielen, oder Crafting/aus dem Array der Auswahl? – jagdpanzer

+0

Auswahl aus dem Array, ja, das ist mein Problem ..... Ich möchte randomisieren, dann spielen. –

Antwort

0

Wenn es ein normaler Java-Array, das die Dateien halten Sie spielen mögen, ist der einfachste Ansatz einen zufälligen Index einfach zu erzeugen und erhält Objekt mit diesem Index aus dem Array:

//Index of the random song 
int r = (int) (Math.random() * (songs.length - 1); 
//Get the song from the array 
songs[r] 
... 

Bearbeiten:

Sie sagten, Sie wollen einen zufälligen Sound aus dem Array zu spielen, indem Sie wissen, Ihr Code nur alle Ihre Dateien im Array in der richtigen Reihenfolge abgespielt.

Wenn Sie nur ONE spielen möchten, müssen Sie die for-Schleife entfernen.

Korrekter Code:

click.addActionListener (new ActionListener(){ 
     public void actionPerformed (ActionEvent x) { 
      //Get random filepath from the array 
      Random rand = new Random(); 
      int random = rand.nextInt(word.length); 
      String temp = word[random]; 

      InputStream in =null; 
      AudioStream out = null; 
      //Get the actual file from the path 
      try { 
       in = new FileInputStream(temp); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 
      try { 
       out = new AudioStream(in); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      }  
      //Play the file 
      AudioPlayer.player.start(out); 
      return; 
     } 
    });  
+0

Nun, ich weiß nicht, ob Sie mir helfen können, die Syntax für das Abspielen der Sounddatei zu schreiben, ich verstehe es nicht gerade ....... Danke! –

+0

Ich benötige weitere Informationen, um Ihnen beim Abspielen der Datei zu helfen. – Sandrogo

+0

Ich habe meinen Beitrag bearbeitet. –

Verwandte Themen