背景音乐的添加

  • 背景音乐的添加
    • [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();
    }
}
相关推荐
panyingdao几秒前
水平渐变进度条实现笔记
笔记
码途漫谈几秒前
Easy-Vibe高级开发篇阅读笔记(十三)——多平台开发之Android App 原生开发
android·人工智能·笔记·ai·开源·ai编程
段ヤシ.3 分钟前
回顾Java知识点,面试题汇总Day1(持续更新)
java·开发语言
Devin~Y5 分钟前
大厂Java面试:Spring Boot + Redis/Kafka + Spring Cloud + JVM + RAG/向量检索(小Y翻车实录)
java·jvm·spring boot·redis·spring cloud·kafka·mybatis
Hello.Reader5 分钟前
算法基础(九)——循环不变式如何证明一个算法是正确的
java·开发语言·算法
朝新_14 分钟前
【LangChain】少样本提示(few-shorting) 大模型 Few-Shot 提示工程:四大 Example Selector应用
java·人工智能·自然语言处理·langchain
yhy666666617 分钟前
java内存
java·开发语言
羊群智妍22 分钟前
2026 GEO监测工具全景:AI搜索优化从入门到进阶
笔记
码云社区23 分钟前
JAVA同城上门做饭系统家政上门同城服务系统源码小程序+APP+公众号+h5
java·开发语言·小程序
Gofarlic_oms130 分钟前
Adams许可排队严重?不想买新许可,闲置回收立即可用
java·大数据·服务器·开发语言·人工智能