坦克大战--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键为发射炮 ...
随机推荐
- mysql5.7提示密码过期的解决方法
首先把MySQL关闭 打开一个终端,输入 sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables 执行完命令后,再打开一个新的终端 sudo ...
- CodeForces–833B--The Bakery(线段树&&DP)
B. The Bakery time limit per test 2.5 seconds memory limit per test 256 megabytes input standard inp ...
- Minimal Labels
Minimal Labels 这个题需要用到拓扑排序的思维,但是这个题还有一个条件--字典序最小,因此可以用一个递增的优先队列来维护,每找到一个入度为 0 的点就把它 push 进去因而每一次判断的点 ...
- Android_(控件)使用自定义控件在屏幕中绘制一条虚线
在Android屏幕中绘制虚线,最通用的是自定义控件DashedLine,再将自定义控件放入xml布局中 运行截图: 程序结构 package com.example.asus.gary_042; i ...
- linux 查看系统性能
1. 查看内存和CPU信息 cat /proc/cpuinfo cpu信息 cat /proc/meminfo |grep MemTotal 内存信息 查看物 ...
- MS14-068提权
• Ms14- • 库 • https://github.com/bidord/pykek • ms14-.py -u user@lab.com -s userSID -d dc.lab.com • ...
- mongoDB 安装过程
1.在官方网站下载 mongoDB的安装包,我下载的是3.4.6 系统为win10_64 2.需要安装vc++2015 在安装时发现 win7 系统安装不了. 不得已才安装的win10 3.安装mo ...
- com.jniwrapper.util.ProcessorInfo
MyEclipse 9.x Crack报错 com.jniwrapper.util.ProcessorInfo usercode or systemid is empty! 卸载JDK9,改成JDK8
- docker解决没有vim问题
正确(1)下载镜像,docker pull nginx(2)启动容器,docker run -d -p 8083:80 nginx[root@ceshi ~]# docker exec -it 8ca ...
- C#设置Cookies .
//-----------------------------载入if(!IsPostBack) { HttpCookie cookie = Request.Cookies[" ...