2015-05-26 57 views
3

因此,我使用java爲CS項目創建了音板。音板由8個鼓組組成,當點擊時應該發揮其設定的聲音。我已經設置了要點擊的區域,但不知道如何實現在設置區域被點擊時會開始的聲音。將音樂添加到我的音效板項目

// FinalProjectst.java 
// AP Computer ScienceStudent Version 


import java.awt.*; 
import java.applet.*; 
import java.awt.geom.Ellipse2D; 


public class FinalProjectst extends Applet 
{ 
    Image picture; 
    Ellipse2D base, bT, snare, lT, rT, hh, lC, rC; 
    int numColor; 

    public void init() 
    { 
     picture = getImage(getDocumentBase(),"drumSet.jpg"); 

     base = new Ellipse2D.Double (355, 415, 305, 240); //Bass 
     bT = new Ellipse2D.Double (715, 360, 325, 245); //Bottom Tom 
     snare = new Ellipse2D.Double (35, 410, 290, 200); //Snare 
     lT = new Ellipse2D.Double (283, 130, 185, 165); //Left Tom 
     rT = new Ellipse2D.Double (543, 120, 200, 175); //Right Tom 
     hh = new Ellipse2D.Double ( 0, 225, 250, 150); //High Hat 
     lC = new Ellipse2D.Double (10, 0, 305, 195); //Left Cymbal 
     rC = new Ellipse2D.Double (765, 0, 505, 275); //Right Cymbal 
    } 


    public boolean contains(Event e, int x, int y) 
    { 
     if(base.contains(x,y)) 
      numColor = 1; 
     else if(bT.contains(x,y)) 
      numColor = 2; 
     else if(snare.contains(x,y)) 
      numColor = 3; 
     else if(lT.contains(x,y)) 
      numColor = 4; 
     else if(rT.contains(x,y)) 
      numColor = 5; 
     else if(hh.contains(x,y)) 
      numColor = 6; 
     else if(lC.contains(x,y)) 
      numColor = 7; 
     else if(rC.contains(x,y)) 
      numColor = 8; 
     else 
      numColor = 9; 
     repaint(); 
     return true; 
    } 

    public void paint(Graphics g) 
    { 

     g.drawImage(picture, 0, 0, this); 


    } 

}

回答

2

有很多不同的方式來播放聲音,但例如,你可以做這樣的事情:

public static void playSound(File soundfile) throws LineUnavailableException, UnsupportedAudioFileException, IOException{ 
     AudioInputStream audioInputStream = null; 
     audioInputStream = AudioSystem.getAudioInputStream(soundfile);    
     Clip clip = AudioSystem.getClip();    
     clip.open(audioInputStream); 
     clip.start(); 
} 

此代碼將播放WAV文件沒有問題,我認爲它也會播放其他類型的聲音文件,但我不確定它會播放哪種聲音類型,以及它不會播放哪種聲音類型。

我希望這個幫助:)

編輯:

正如你可以看到有很多可從該代碼中拋出的異常的,所以你可能要處理他們以適當的方式。

+0

是的,這是真的,但我不知道OP如何處理異常,所以他決定如何處理異常和NPE。如果這是我的程序中的一個,我已經爲漢德林和報告/記錄錯誤做了一些課。雖然好點。 – Roan

+1

好點我現在就這樣做。現在看起來更清潔了,謝謝你的建議。 – Roan