
正文
动画加音乐java源代码 动画加音乐java源代码是什么
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
我想把我的java小程序中嵌入一个背景音乐,写出添加背景音乐代码。
放音乐的api网上查有很多,比如javax.sound.midi.*;
支持midi,mid背景音乐的播放
public class Music implements MetaEventListener, Runnable{
private Sequence sequence = null;
private Sequencer sequencer;
private boolean isPlaying = false;
private volatile Thread thread;
public Music(){
}
public Music(String midifile){
try {
loadMidi(midifile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidMidiDataException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//导入midi文件到内存中传给Sequence对象,相当与编码器
public void loadMidi(String filename) throws IOException, InvalidMidiDataException{
sequence = MidiSystem.getSequence(this.getClass().getResourceAsStream(filename));
}
//播放方法
public void play(){
if(isPlaying){
return;
}
try {
sequencer = MidiSystem.getSequencer();
sequencer.open();
//用Sequencer对象把声音文件序列解码出来播放
sequencer.setSequence(sequence);
sequencer.addMetaEventListener(this);
//设置循环次数,-1表示一直循环
sequencer.setLoopCount(-1);
sequencer.setLoopStartPoint(0);
sequencer.setLoopEndPoint(sequencer.getTickLength());
} catch (MidiUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidMidiDataException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(thread == null){
thread = new Thread(this);
thread.start();
}
}
public void stop(){
if(isPlaying){
sequencer.stop();
isPlaying = false;
}
if(thread != null){
thread = null;
}
}
public void meta(MetaMessage meta) {
if(meta.getType() == 47){
System.out.println("Sequencer is done playing");
}
// TODO Auto-generated method stub
}
public void run() {
// TODO Auto-generated method stub
Thread current = Thread.currentThread();
while(current == thread !isPlaying){
sequencer.start();
isPlaying = true;
try {
thread.sleep(1001);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//用起来也很方便
public static void main(String[] args){
Music music = new Music("a.mid");
music.play();
}
}
如果这样写路径类要和音频文件放在一个目录下,如果你不想这样,有两种方法,一种是修改路径字符串,另一种是把Class.getResourceAsStream方法改成new FileInputStream 这两个方法加载资源的初始路径不同,前者找class文件所在目录,后者找project目录
相关问答
Q1: 怎么在Java程序中加音乐?
可以通过Service来播放背景音乐动画加音乐java源代码,以下是实现代码:
1.在AndroidManifest.xml文件中动画加音乐java源代码的application标签内加入下边语句
service android:name=".MusicServer"
intent-filter
action android:name="com.angel.Android.MUSIC"/
category android:name="android.intent.category.default" /
/intent-filter
/service
2.新建MusicServer.java类,内容为
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class MusicServer extends Service {
private MediaPlayer mediaPlayer;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onStart(Intent intent,int startId){
super.onStart(intent, startId);
if(mediaPlayer==null){
// R.raw.mmp是资源文件,MP3格式的
mediaPlayer = MediaPlayer.create(this, R.raw.abc);
mediaPlayer.setLooping(true);
mediaPlayer.start();
}
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mediaPlayer.stop();
}
}
3.将歌曲放入raw文件夹下,名称为abc。
4.在Activity中加入代码
private Intent intent = new Intent("com.angel.Android.MUSIC");
onCreate方法中加入startService(intent);
就可以播放了。
Q2: 给java程序加背景音乐的代码~
一楼的回答说对了一部分,主要还是多线程的问题.
我的毕业设计也是做的一个小游戏程序--坦克大战,当初游戏逻辑界面都完成了想加入音频的时候也遇到了困难,最开始想到了多线程处理,也就是自身游戏的绘图线程占用着主线程,如果此时再在同一线程播放音频的话肯定会造成音频流或者绘图类paint阻塞,所以这时要为音频加入一个单独额外的线程,已达到避免线程阻塞的作用.
但是此时还是会出现音频不流畅的情况(当然,大多情况是出现短暂音效后便消失),主要问题在于Java在利用线程读取音频的时候,是通过流的方式读取的,此时可以考虑在程序加载之前先“预载”一次音频,当需要的时候再调用它的播放线程,利用流处理.这么做的好处是将音频存放在内存中,当需要的时候能正常的出现.当然,后面这段情况是在你运用到了多线程的时候才会出现的。
找了下毕设时的代码,如下:
/**
*该方法为音频流缓冲方法,在调用音频播放线程时调用
*/
public BufferedInputStream loadBomb(){
BufferedInputStream bufbomb = null;
try{
File dir = new File("D:/java/TankWar2.6/"); //所要播放文件的路径
File fObject = new File(dir,"bomb.wav"); //音频名
FileInputStream file = new FileInputStream(fObject);
bufbomb = new BufferedInputStream(file);
}catch(IOException e) {
System.out.println(e.getMessage());
}
return bufbomb;
}
/**
* 缓冲完毕的核爆音频播放线程
*/
private class BombMusic implements Runnable{ //通过流读取声音文件
BufferedInputStream buf;
public void run(){
buf = loadBomb();
try{
AudioStream audio = new AudioStream(buf);
AudioPlayer.player.start(audio);
}catch(IOException e){
e.printStackTrace();
}
}
}
Q3: 求在java中添加背景音乐的代码
不知道你是在java里哪添加?Swing界面中吗?
下面这个是我之前做Swing界面程序时添加音乐的代码,希望对你有帮助
AudioClip[] musics;//定义音乐集合
musics = new AudioClip[2];//初始化
URL url1 = this.getClass().getResource("/ReadyGo.WAV"); //定义音乐文件地址
URL url2 = this.getClass().getResource("/back1.mid"); //定义音乐文件地址
musics[0] = JApplet.newAudioClip(url1);
musics[1] = JApplet.newAudioClip(url2);
musics[0].play();//音乐开始执行
musics[1].stop();//停止播放
Q4: Java程序怎样添加背景音乐?
你可以试一下下面的代码
import java.applet.AudioClip;
import java.io.*;
import java.applet.Applet;
import java.awt.Frame;
import java.net.MalformedURLException;
import java.net.URL;
public class JavaClip extends Frame{
public JavaClip(){
super();
}
public static void main(String args[]) {
try {
URL cb;
File f = new File("C:\\Documents and Settings\\Administrator\\桌面\\刀出鞘.wav"); //引号里面的是音乐文件所在的绝对鹿筋
cb = f.toURL();
AudioClip aau;
aau = Applet.newAudioClip(cb);
//aau.play();
aau.loop();
//循环播放 aau.play() 单曲 aau.stop()停止播放
JavaClip frame=new JavaClip();
//frame.setBounds(0, 0, 300, 200);
//frame.setVisible(true);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
Q5: 急需在JAVA应用程序中添加背景音乐的代码,谢谢
在src下面建一个文件夹music放音乐如withoutYou.mp3
try{
java.net.URL musicPath=MyActionListener.class.getResource("/music/withoutYou.mp3");
System.out.println(musicPath);
music= java.applet.Applet.newAudioClip(musicPath);
music.loop();//循环播放
}catch( Exception ef){
javax.swing.JOptionPane.showMessageDialog(null, "音乐播放失败");
}
绝对可以;
不行找我; qq983714669;要给我80分;
动画加音乐java源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于动画加音乐java源代码是什么、动画加音乐java源代码的信息别忘了在本站进行查找喔。








