- 背景音乐的添加
- [1. 创建音乐类](#1. 创建音乐类)
- [2. 音乐类的代码](#2. 音乐类的代码)
背景音乐的添加
学习于bilibili 尚学堂官方
1. 创建音乐类
在model中创建Music类
创建一个文件夹lib存放jar包
创建文件夹存放背景音乐
将背景音乐和jar包放入其中
点击文件(F)->项目构建->模块->依赖-> + ->JARs or ...->选择jar包->勾选
2. 音乐类的代码
java
package com.zy.model;
/*
背景音乐
*/
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Music {
public void music() throws FileNotFoundException, JavaLayerException {
//获取当前音乐地址
String str = System.getProperty("user.dir") + "/music/music.mp3";
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(str));
Player player = new Player(bufferedInputStream);
player.play();
}
}
在TestRenderMap中
java
package com.zy.test;
/*
测试渲染一个地图类
*/
import com.zy.model.*;
import com.zy.util.LayerUtil;
import com.zy.util.MapUtil;
import javazoom.jl.decoder.JavaLayerException;
import javax.swing.*;
import java.io.FileNotFoundException;
import java.util.List;
public class TestRenderMap extends JFrame {
public static Map map = MapUtil.build(3);
public TestRenderMap() throws FileNotFoundException, JavaLayerException {
//初始化窗口
init();
//渲染图层
List<Layer> list = map.getList();
for (int i = 0; i < list.size(); i++) {
renderLayer(list.get(i));
}
map.compareAll();//游戏开始时判定置灰
//自动刷新
autoRefresh();
new Music().music();
}
private void renderLayer(Layer layer){
//渲染图层
//默认坐标是(0,0)
//布局方式 默认swing 添加组件 提供了多种布局方式 网格 流
Cell[][] cells = layer.getCells();
for (int row = 0; row < cells.length; row++) {
for (int col = 0; col < cells[row].length; col++) {
Brand brands1 = cells[row][col].getBrand();
int x = col * 50 + layer.getOffsetx();//0 50 100 150 ...
int y = row * 50 + layer.getOffsety();//0 50 100 ...
brands1.setBounds(x,y,50,50);
this.getContentPane().add(brands1);
}
System.out.println();
}
}
private void init(){
this.setTitle("易-java-羊了个羊");//设置弹出游戏窗口的标题
this.setSize(450,800);//设置窗口大小
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭的同时也推出java进程
//设置绝对布局
this.setLayout(null);
this.setBounds(0,0,450,800);
this.setLocationRelativeTo(null);//居中
this.setVisible(true);//让窗口显示 默认隐藏
}
//线程
private void autoRefresh(){
JFrame start = this;
new Thread(new Runnable() {
@Override
public void run() {
//用来刷新
while (true){
start.repaint();//调用的还是当前窗口的repaint
try {
Thread.sleep(40);
start.setVisible(true);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}).start();
}
public static void main(String[] args) throws FileNotFoundException, JavaLayerException {
new TestRenderMap();
}
}