java实现播放背景音乐

网友投稿 249 2022-10-30


java实现播放背景音乐

本文实例为大家分享了java实现播放背景音乐的具体代码,供大家参考,具体内容如下

测试源码

播放背景音乐类

package forGame;

import javax.sound.sampled.*;

import java.io.File;

//测试背景音乐播放(只能播放.wav文件)

public class Demo_2 {

//需要传入要播放的文件

void playMusic(File file)

{

try

{

//创建相当于音乐播放器的对象

Clip clip = AudioSystem.getClip();

//将传入的文件转成http://可播放的文件

AudioInputStream audioInput = AudioSystem.getAudioInputStream(file);

//播放器打开这个文件

clip.open(audioInput);

//clip.start();//只播放一次

//循环播放

clip.loop(Clip.LOOP_CONTINUOUSLY);

} catch(Exception ex){

ex.printStackTrace();

}

//死循环不让主程序结束(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;

//动态效果

public class Demo_1 extends JFrame{

//背景

private BufferedImage bufferedImage;

//窗体大小

private int width;

private int height;

//照片数组

private BufferedImage[] images = new BufferedImage[4];

//要绘制动态图片中的那张

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("动态测试");

//设置窗口

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 );

//绘制动态图片

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();

mmHDPmShe try {

sleep(100);//每隔100毫秒重绘一次

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

public static void main(Stringhttp://[] args) {

new Demo_1();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:maven入门
下一篇:java虚拟机工具入门
相关文章

 发表评论

暂时没有评论,来抢沙发吧~