在做java贪吃蛇游戏课设时,想添加背景音乐,用了以下很简单的步骤即可完成,亲测有效哦!

调用方法:

new Thread(()->{while(true) {Data.playMusic();}

}).start();// Lambda表达式

//new Thread(new Runnable() {

//

//@Override

//public void run() {

//while (true) {

//playMusic();

//}

//}

//}).start();// 开启一个线程用来播放音乐

方法体:

import java.io.File;

import javax.sound.sampled.AudioFormat;

import javax.sound.sampled.AudioInputStream;

import javax.sound.sampled.AudioSystem;

import javax.sound.sampled.DataLine;

import javax.sound.sampled.FloatControl;

import javax.sound.sampled.SourceDataLine;

static void playMusic() {// 背景音乐播放

try {

AudioInputStream ais = AudioSystem.getAudioInputStream(new File("D:/mysoft/eclipse/贪吃蛇/music.wav")); //绝对路径

AudioFormat aif = ais.getFormat();

final SourceDataLine sdl;

DataLine.Info info = new DataLine.Info(SourceDataLine.class, aif);

sdl = (SourceDataLine) AudioSystem.getLine(info);

sdl.open(aif);

sdl.start();

FloatControl fc = (FloatControl) sdl.getControl(FloatControl.Type.MASTER_GAIN);

// value可以用来设置音量,从0-2.0

double value = 2;

float dB = (float) (Math.log(value == 0.0 ? 0.0001 : value) / Math.log(10.0) * 20.0);

fc.setValue(dB);

int nByte = 0;

final int SIZE = 1024 * 64;

byte[] buffer = new byte[SIZE];

while (nByte != -1) {

nByte = ais.read(buffer, 0, SIZE);

sdl.write(buffer, 0, nByte);

}

sdl.stop();

} catch (Exception e) {

e.printStackTrace();

}

}

注意事项:

若程序报错:

Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file

at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1189)

at com.ywq3.Test.main(Test.java:21)

异常信息是说,不支持的格式,即该音频文件不支持,得不到该文件的输入流。我用的是wav格式,原来音频文件是mp3,转换成wav时直接改不行,就会报以上错误。明明是wav文件,却报错说不支持该格式,则可能是该wav文件内部格式有错误。安利一个格式转换网站:https://cn.office-converter.com/Convert-to-WAV。我是转换成正确的wav格式就可以播放音乐啦。此处参考了博客http://blog.csdn.net/qq_25827845/article/details/79026786

如果本文对您有帮助,可不可以给萌新点一个赞,鼓励小萌新坚持写博客的热情!

java编写添加背景音乐代码_java代码中简单添加背景音乐(亲测有效)相关推荐

  1. java编写静态工具类_Java编程中静态内部类与同步类的写法示例

    java静态内部类 将某个内部类定义为静态类,跟将其他类定义为静态类的方法基本相同,引用规则也基本一致.不过其细节方面仍然有很大的不同.具体来说,主要有如下几个地方要引起各位程序开发人员的注意. (一 ...

  2. Java List.size()方法:返回列表中元素的个数(亲测)

    Java 集合类中的 List.size() 方法以 int 形式返回列表中元素的个数. 语法: size() 返回列表中元素的个数.如果列表中元素的个数超过 2 147 483 647,则返回 2 ...

  3. java编写出一个小船的代码

    Java编写一个小船的形状 代码如下: public class forTest01{        public static void main(String[] args){           ...

  4. webview重新加载(reload)或者发起 redirect request导致js和objc代码之间的bridge失联解决方案(亲测有效)

    webview重新加载(reload)或者发起 redirect request导致js和objc代码之间的bridge失联解决方案(亲测有效) 参考文章: (1)webview重新加载(reload ...

  5. 在企业级案例中进阶excel资源-亲测十分有用

    在企业级案例中进阶excel资源-亲测十分有用 对于已入门Excel,但还不能用Excel熟练分析业务数据.高效使用的同学来说,是不错的进阶课程 这是一个以企业级案例为核心的课程.老师会在课程中演示案 ...

  6. jupyter notebook 添加核 (jupyter:ModuleNotFoundError: No module named ‘torch‘) 亲测可用

    jupyter notebook 添加核 (jupyter:ModuleNotFoundError: No module named 'torch') 亲测可用 刚刚解决了一个困扰老衲很久的问题,开心 ...

  7. java web工程中如何添加图片_java web中如何添加图片

    java web中如何添加图片 对于java可视化界面插入背景图片只需要background-image:url(图片路径)就行,而对于web项目中,并非如此 效果如下: 我们就需要在jsp页面中写J ...

  8. java命令行参数工具_Java方法中的参数太多,第8部分:工具

    java命令行参数工具 在我的系列文章的前七篇文章中,有关处理Java方法中期望的参数过多的内容集中在减少方法或构造函数期望的参数数量的替代方法上. 在本系列的第八篇文章中,我将介绍一些工具,这些工具 ...

  9. java 绑定微信号开发_Java开发中的常见危险信号

    java 绑定微信号开发 在开发,阅读,复审和维护成千上万行Java代码的几年中,我已经习惯于看到Java代码中的某些" 危险信号 ",这些信号通常(但可能并非总是)暗示着代码有问 ...

最新文章

  1. linux编程能否用于windows,使R包在Windows和Linux中都可以工作
  2. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波6 - 分段线性变换 - 比特平面分层
  3. mysql group_concat去重_MySQL group_concat() 函数用法
  4. 宝塔 windows 2012 配置 ftp 允许 fileZilla 连接
  5. Java读取指定目录下的所有文件名
  6. php xml 返回 微信,php版微信返回用户text输入的方法
  7. Linux内存管理:Fixmaps(固定映射地址)和ioremap
  8. mysql计算相邻的差值_MySQL如何计算相邻两行某列差值
  9. 包含的前缀数目超过了最大值。最大值为 2_「西法带你学算法」一次搞定前缀和...
  10. avformat_open_input 支持的参数
  11. c# spire.xls 设置文字为微软雅黑_微软自带de白板应用,超好用
  12. 《遥感原理与应用》孙家抦版知识点总结(含简答题)——第二章
  13. 一杯茶的时间,上手 Django 框架开发
  14. msdia80.dll文件出现在磁盘根目录下的解决方案
  15. 逆火效应:该对谁负责?
  16. VBA 64 32 调用dll的区别
  17. Mplus中出现‘NO CONVERGENCE. NUMBER OF ITERATIONS EXCEEDED’
  18. tomcat用c语言开发服务,apache tomcat是什么语言开发的
  19. ThreadX学习(4)——内存管理
  20. 观黄梅戏《打猪草》有感

热门文章

  1. E3 1200 系列服务器,另类的Xeon E3-1200 v4:我们都误会它了!
  2. CPA小课堂:MUJI(无印良品)申请破产保护,里面牵扯了什么?
  3. 【Vision主网】申请及部署第一验证者FV节点全流程
  4. 将Ext JS 5应用程序导入Web项目中
  5. 10.(leaflet篇)leaflet暗色系地图样式地图(滤镜实现,反色滤镜)
  6. 谷歌如何通过安卓赚钱
  7. ❤️用武侠小说的形式来阅读LinkedList的源码,绝了!
  8. 仿天眼查-股权结构图
  9. Java后端最佳的学习路线
  10. 如何让手机共享电脑代理网络的WIFI热点