java實現播放背景音樂
更新時間:2021年03月22日 08:43:35 作者:點丶錯了。。
這篇文章主要為大家詳細介紹了java實現播放背景音樂,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java實現播放背景音樂的具體代碼,供大家參考,具體內容如下
測試源碼
播放背景音樂類
package forGame;
import javax.sound.sampled.*;
import java.io.File;
//測試背景音樂播放(只能播放.wav文件)
public class Demo_2 {
//需要傳入要播放的文件
void playMusic(File file)
{
try
{
//創(chuàng)建相當于音樂播放器的對象
Clip clip = AudioSystem.getClip();
//將傳入的文件轉成可播放的文件
AudioInputStream audioInput = AudioSystem.getAudioInputStream(file);
//播放器打開這個文件
clip.open(audioInput);
//clip.start();//只播放一次
//循環(huán)播放
clip.loop(Clip.LOOP_CONTINUOUSLY);
} catch(Exception ex){
ex.printStackTrace();
}
//死循環(huán)不讓主程序結束(swing可不用)
/*
while(true){
}
*/
}
}
窗口類
package forGame;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
//動態(tài)效果
public class Demo_1 extends JFrame{
//背景
private BufferedImage bufferedImage;
//窗體大小
private int width;
private int height;
//照片數組
private BufferedImage[] images = new BufferedImage[4];
//要繪制動態(tài)圖片中的那張
private BufferedImage image;
//背景音樂
private File bgm;
//播放音樂類對象
private Demo_2 demo_2 = new Demo_2();
//初始化
{
if(bufferedImage == null){
try {
bufferedImage = ImageIO.read(new File("src\\image\\背景.png"));
for(int i = 1;i < images.length + 1;i ++)
images[i - 1] = ImageIO.read(new File("src\\image\\大飛機爆炸" + i + ".png"));
} catch (IOException e) {
e.printStackTrace();
}
}
width = bufferedImage.getWidth();
height = bufferedImage.getHeight();
image = images[0];
bgm = new File("src\\music\\bgm.wav");
}
public Demo_1(){
super("動態(tài)測試");
//設置窗口
setSize(width,height);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
//啟動線程
MyThread myThread = new MyThread();
myThread.start();
//播放背景音樂
demo_2.playMusic(bgm);
}
//雙緩沖繪制解決圖片閃爍問題
@Override
public void paint(Graphics g) {
Image image = this.createImage(width,height);
Graphics gImage = image.getGraphics();
gImage.setColor(gImage.getColor());
gImage.fillRect(0,0,width,height);
super.paint(gImage);
//繪制背景
gImage.drawImage(bufferedImage,0 ,0 ,null );
//繪制動態(tài)圖片
gImage.drawImage(this.image,0 ,100 ,null );
//最后繪制緩沖后的圖片
g.drawImage(image,0 ,0 , null);
}
private int num = 0;//images數組內圖片索引
//線程內部類
private class MyThread extends Thread{
@Override
public void run() {
while(true) {
if(num <= 3) {
image = images[num ++];
}
else
num = 0;
repaint();
try {
sleep(100);//每隔100毫秒重繪一次
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
new Demo_1();
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
myeclipse安裝Spring Tool Suite(STS)插件的方法步驟
這篇文章主要介紹了myeclipse安裝Spring Tool Suite(STS)插件的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08
使用Spring開啟@Async異步方式(javaconfig配置)
這篇文章主要介紹了使用Spring開啟@Async異步方式(javaconfig配置),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08

