java awt 窗口渐变动画_java awt字体桌面淡入小程序

package com.usc.base.Bgm;

import java.io.File;

import javax.sound.sampled.AudioFormat;

import javax.sound.sampled.AudioInputStream;

import javax.sound.sampled.AudioSystem;

import javax.sound.sampled.DataLine;

import javax.sound.sampled.FloatControl;

import javax.sound.sampled.SourceDataLine;

/**

*

* @author Sky_in_night

* @modification time 2017年12月24日下午11:08:29

* @fileName BaseBgm.java

* @packageName BaseBgm

* @projectName Calculator

* @className BaseBgm

*/

public class BaseBgm {

public BaseBgm() {

}

private static SourceDataLine sdl;// 音乐播放读取函数

private static boolean start = true;// 是否音乐开始播放

private static int STEP = 64;// 按多少byte读取音频文件

/**

* 播放音乐的函数,传入音频的地址

*

* @param fileurl

*/

public static void play_music(String fileurl) {

try {

AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileurl));// 打开一个音频文件文件搜索

AudioFormat af = ais.getFormat();

DataLine.Info info = new DataLine.Info(SourceDataLine.class, af);// 仿照百度。。。。。

sdl = (SourceDataLine) AudioSystem.getLine(info);

sdl.open(af);

sdl.start();// 开始播放,一次播放

FloatControl fc = (FloatControl) sdl.getControl(FloatControl.Type.MASTER_GAIN);

// value可以用来设置音量,从0-2.0

double value = 2;

float dB = (float) (Math.log(value == 0.0 ? 0.0001 : value) / Math.log(10.0) * 20.0);

fc.setValue(dB);

int end = 0;// 用来判断此音频是否播放完毕

int size = 1024 * STEP;// 设置每次读取64kb的数据帧

byte[] buffer = new byte[size];

while (end != -1)// 当还没读取完继续读取

{

end = ais.read(buffer, 0, size);

if (end == -1)// 防止下溢

break;

sdl.write(buffer, 0, end);

}

start = false;

sdl.stop();// 结束播放

} catch (Exception e) {

e.printStackTrace();

}

}

// interrupt 结束线程的方法

public static void StopMusic() {

sdl.stop();

start = false;

sdl.close();

}

public static void PlayStart(String fileurl) {

/**

* 防止还有音乐还在播放

*/

if (sdl != null && sdl.isOpen()) {

sdl.stop();

sdl.close();

}

play_music(fileurl);

sdl.close();

}

public static void ChangeStart(String fileurl) {

if (start)

StopMusic();

start = true;

play_music(fileurl);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值