背景音乐的添加

  • 背景音乐的添加
    • [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();
    }
}
相关推荐
小宇的天下3 分钟前
Calibre 3Dstack--每日一个命令day 6 [process和export layout](3-6)
java·前端·数据库
牛奔14 分钟前
docker compose up 命令,默认配置文件自动查找规则
java·spring cloud·docker·容器·eureka
工具罗某人15 分钟前
docker快速部署jenkins
java·docker·jenkins
wtmReiner16 分钟前
山东大学数值计算2026.1大三上期末考试回忆版
笔记·算法
jimmyleeee19 分钟前
人工智能基础知识笔记三十二:向量数据库的查找类型和工作原理
人工智能·笔记
华如锦37 分钟前
四:从零搭建一个RAG
java·开发语言·人工智能·python·机器学习·spring cloud·计算机视觉
Tony_yitao40 分钟前
22.华为OD机试真题:数组拼接(Java实现,100分通关)
java·算法·华为od·algorithm
JavaGuru_LiuYu41 分钟前
Spring Boot 整合 SSE(Server-Sent Events)
java·spring boot·后端·sse
爬山算法44 分钟前
Hibernate(26)什么是Hibernate的透明持久化?
java·后端·hibernate
彭于晏Yan1 小时前
Springboot实现数据脱敏
java·spring boot·后端