坦克大战--Java类型 ---- (1)音乐播放
实现原理
我用接口java.applet.AudioClip实现音乐播放,那么我们需要了解这个接口的情况。
我们主要使用其中的三个方法:
(1)void loop(); //循环播放
(2)void play(); //开始播放(单次)
(3)void stop(); //停止播放
虽然AudioClip 是一个接口,不能直接创建实例,但是java.applet.Applet 对象提供了一个静态的方法newAudioClip(),因此可以直接利用如下的语句,得到一个AudioClip 的实例引用:
AudioClip auu= java.applet.Applet.newAudioClip(new java.net.URL(this.jTextField1.getText()));
newAudioClip()方法的参数是声音文件的URL,具体如下:
static void newAudioClip(URL url);
那么现在我们需要了解URL是什么东西,URL是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它(来自百度百科)。
目前的情况我们只需要知道URL可以保留音乐文件,那么我们用File保存音乐文件的内容,通过 FIle ---> URI ----> URL得到音乐文件URL,随后作为AudioClip的参数加入就可以了。
最后对于音乐的播放等等,我们就可以使用上面的三种方法实现音乐播放和关闭。
代码区(和游戏内部有一定区别,但效果一致)
package component; import java.applet.AudioClip;
import java.io.*;
import java.applet.Applet;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL; public class Music extends Thread {
private File file;
private URI uri;
private URL url;
private AudioClip aau; //由于游戏内部需要多种音乐,故根据参数的不同,方法不同的音乐
Music(int mode) {
if (mode == 1) {
file = new File("img/fire.wav");
} else if (mode == 2) {
file = new File("img/head.wav");
} else if (mode == 3) {
file = new File("img/mid.wav");
} else if (mode == 4) {
file = new File("img/first.wav");
} else if (mode == 5) {
file = new File("img/second.wav");
} else if (mode == 6) {
file = new File("img/fifth.wav");
} else if (mode == 7) {
file = new File("img/lost.wav");
} else if (mode == 8) {
file = new File("img/win.wav");
} else if (mode == 9) {
file = new File("img/end.wav");
} else if (mode == 10) {
file = new File("img/ranking.wav");
} else if (mode == 11) {
file = new File("img/set.wav");
}
uri = file.toURI();//转化为URI
try {
url = uri.toURL();//转化为URL
aau = Applet.newAudioClip(url);
} catch (MalformedURLException e) {
e.printStackTrace();
} // 解析地址 } public void run() {
try {
aau.loop(); // 循环播放
} catch (Exception e) {
e.printStackTrace();
} } //外部控制音乐关闭
public void close() {
aau.stop();
} //外部控制音乐开启
public void open() {
aau.loop();
} public static void main(String[] args) {
new Music(11).start();//由于使用多线程进行播放,所以需要先开启音乐播放线程
//由于对音乐的开关的控制在游戏的其他地方,所以这个地方如果不手动结束程序,音乐不会停止
}
}
坦克大战--Java类型 ---- (1)音乐播放的更多相关文章
- 坦克大战--Java类型 ---- (2)按键设置和用户名的输入
一.实现思路(emmmm,这个地方我很大程度参照了别人的写法) 由于键盘按键众多,因此使用选择框JComboBox 进行按键选择,点击一个JButton 按钮后,读取所有选择框中的内容,然后存到一 ...
- 坦克大战--Java类型
写在前面 Java编译器下载教程(真的良心):https://blog.csdn.net/Haidaiya/article/details/81230636 本项目为本人独自制作,请各位尊 ...
- 坦克大战--Java类型 ---- (3)实现socket通信
一.实现思路 使用socket通信的一些方法来实现socket通信,客户端和服务端两边需要约定好通信的接口Port(尽量选高的),客户端需要服务端的IP地址,以实现数据交流. 同时,客户端和服务端需要 ...
- 坦克大战java版
吃了可以加血的血块类 import java.awt.*; public class Blood { //血块移动的路径 int[][] pos = { {450,250},{450,252},{45 ...
- 躁!DJ 风格 Java 桌面音乐播放器
本文适合有 Java 基础知识的人群,跟着本文可学习和运行 Java 版桌面 DJ 音乐播放器. 本文作者:HelloGitHub-秦人 HelloGitHub 推出的<讲解开源项目>系列 ...
- Java坦克大战(四)
这是我的坦克游戏大战的最后一版,里面添加很多新的功能.这个坦克大战的有很多不足之处,但是对于初学者来说依然是一个很好的练习项目,从中我们可以学习Java基础知识,将知识与项目结合,学习面向对象编程思想 ...
- (java项目)坦克大战 2.0
这个版本,只能算是一个雏形,把最基本的东西给完成了,不过,后面可添加的也不多.有一点,还是想去实现,那就是敌方坦克自己寻找对手!也就是游戏AI. emmm, 什么时候可以了解一下这个AI.顺便学学py ...
- java制作简单的坦克大战
坦克大战是我们小时候玩红白机时代的经典游戏,看到有不少小伙伴都使用各种语言实现了一下,手痒痒,也使用java做的一个比较简单的坦克大战,主要面向于学过Java的人群,与学了一段时间的人,有利于面向对象 ...
- Java小项目--坦克大战(version1.0)
Java小项目--坦克大战<TankWar1.0> 这个小项目主要是练习j2se的基础内容和面向对象的思想.项目实现了基本的简单功能,我方一辆坦克,用上下左右键控制移动方向,按F键为发射炮 ...
随机推荐
- 一篇perfect描述“神秘”inf文件的文章[转]
INF Files for Bears of Little BrainMay 1, 2003Brian Catlin Copyright � 2003 by Brian Catlin. All rig ...
- Spring——MyBatis整合
一.xml配置版 1.导入依赖 <!--MyBatis和Spring的整合包 由MyBatis提供--> <dependency> <groupId>org.myb ...
- Suitable Replacement
D. Suitable Replacement 这个题统计出 s 和 t 中的各字母个数以及"?"的个数,直接暴力即可,s中不足的字母可用 "?"来替代 这个题 ...
- 2、dubbo基础知识
1.简介 2.dubbo架构 3.dubbo环境搭建 注意:cmd命令都是在bin目录的地址栏直接输入 xxx.cmd 4.配置dubbo-admin 步骤一: 步骤二: 步骤三: 步骤四: 步骤五: ...
- SQL语句中 NOT IN 子句的“正确打开方式”
在写SQL语句的时候,若where条件是判断用户不在某个集合当中,我们习惯使用 where 列名 not in (集合) 子句,这种写法本身没有问题,但实践过程中却发现很多人在写类似的SQL语句时,写 ...
- [BZOJ1123]:[POI2008]BLO(塔尖)
题目传送门 题目描述 Byteotia城市有n个towns.m条双向roads.每条road连接两个不同的towns,没有重复的road.所有towns连通. 输入格式 输入n,m及m条边. 输出格式 ...
- HDU3844Mining Your Own Business
目测某年HNOI,(其实这个题是2011年的WF,hdu上找到的,HNOI2012那个中文题在bzoj和loj上都有,叫矿场搭建,题意几乎一样,数据比较弱,交这份代码也能A). 先讲题解,然后说一些有 ...
- Java 注解指导手册(下)
9. 自定义注解 正如我们之前多次提及的,可以定义和实现自定义注解.本章我们即将探讨. 首先,定义一个注解: public @interface CustomAnnotationClass ...
- 对HTML中P标签的思考
这几天在用VUE-CLI做一个demo,然后在渲染一个列表的时候遇到了一个挺不可思议的事情: <!--这只是一小部分,v-for的内容在上方--> <div class=" ...
- elasticsearch 单实例安装启动
elasticsearch 初次启动 下载 elasticsearch-6.3.2.tar.gz 创建目录 /usr/local/elasticsearch/ 解压 tar -zxf elastics ...