Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将音乐添加到我的声卡项目中_Java_Audio - Fatal编程技术网

Java 将音乐添加到我的声卡项目中

Java 将音乐添加到我的声卡项目中,java,audio,Java,Audio,因此,我正在使用java为我的CS项目创建一个音板。音板由一个8件套鼓组成,当点击时,该鼓应播放其设定的声音。我已经设置了要单击的区域,但不知道如何实现在单击设置区域时开始的声音 // FinalProjectst.java // AP Computer ScienceStudent Version import java.awt.*; import java.applet.*; import java.awt.geom.Ellipse2D; public class FinalProj

因此,我正在使用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);


    }

}

播放声音有很多不同的方法,但例如,您可以这样做:

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文件没有问题,我认为它也将播放其他类型的声音文件,但我不确定它将播放什么声音类型和不播放什么声音类型

我希望这有帮助:)

编辑:


正如您所看到的,这段代码中可以抛出很多异常,因此您可能希望以适当的方式处理它们。

是的,这是真的,但我不知道OP如何处理异常,所以由他决定如何处理异常和NPE。如果这是在我的一个程序中,我已经为处理和报告/记录错误上了一些课。说得好,说得好,我现在就去。现在看起来干净多了,谢谢你的建议。