簡體   English   中英

程序運行時如何播放背景音樂? 在java中

[英]How to play a background music when the program run? in java

我正在制作紙牌游戲,差不多已經完成了。 我最后要做的就是播放一些背景音樂。 現在,如果我將文件復制到默認包中並制作一個游戲的jar文件,音樂將在所有計算機上播放嗎? 當前,在我的PC上,通過提供文件的特定路徑(例如"C:\\\\samp.wav"; 但是我擔心,如果我制作一個jar文件並在另一台PC上運行它,它將無法正常工作。 我認為將會有FileNotFoundException 我是對還是錯?

對於卡的圖像,我使用以下行:

jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/1.jpg")));

我已將這些圖片插入默認包裝中。 我想對音樂文件做同樣的事情,但是怎么做? 我正在使用NetBeans。

您應該在應用程序jar中包含wav文件。 這樣,您將不必管理用戶文件系統中的文件副本(請記住,例如,在UNIX,Mac等系統中,您無法通過C:/...訪問硬盤驅動器C:/... )。

例如,如果將wav文件放在應用程序jar的根目錄( app.jar/samp.wav )中:

InputStream is = getClass().getClassLoader().getResourceAsStream("samp.wav");

或者,如果您在應用程序jar根目錄中有一個“ sounds”目錄( app.jar/sounds/samp.wav ):

InputStream is = getClass().getClassLoader().getResourceAsStream("sounds/samp.wav");

檢查此帖子以獲取有關使用Java播放wav文件的更多信息(盡管您的問題,我認為您已經解決了此問題)。 還考慮在單獨的線程中播放它。 另請訪問此網站,以獲取有關使用Java管理媒體文件的示例

import javax.swing.*;
import sun.audio.*;
import java.awt.event.*;
import java.io.*;
public class Sound {
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(200,200);
JButton button = new JButton("Click me");
frame.add(button);
button.addActionListener(new AL());
frame.setVisible(true);
}
public static class AL implements ActionListener{
public final void actionPerformed(ActionEvent e){
music();
}
}
public static void music(){
AudioPlayer MGP = AudioPlayer.player;
AudioStream BGM;
AudioData MD;
ContinuousAudioDataStream loop = null;
try{
BGM = new AudioStream(new FileInputStream("C:\\test\\ha.wav"));
MD = BGM.getData();
loop = new ContinuousAudioDataStream(MD);
}catch(IOException error){
System.out.print("file not found");
}
MGP.start(loop);
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM