因为SoundPool只有1MB的内存空间可用所以背景音乐选用了MediaPlayer
使用MediaPlayer来播放,但是希望在音乐过度的时候实现淡入淡出
于是我写了static public void fadeBGM(){
bgmV -= TIME;
if(bgmV < 0){
bgmV = 0;
fade = false;
}
bgm.setVolume(bgmV, bgmV);
}
这样的代码,送入线程,准备实现音乐的淡入淡出但是一直到bgmV = 0 音乐才会突然一下停掉,中途完全没有淡入淡出的感觉……求各位大神指点迷津啊线程部分代码
private void logic() {
field.scene.logic();
//如果音乐执行了淡出
if(Audio.fade){
Audio.fadeBGM();
}
}
public void run() {
long ts;
long td;
while (flag) {
ts = System.currentTimeMillis();
logic();
myDraw();
td = System.currentTimeMillis();
TimeStart = ts;
TimeEnd = td;
try {
if (TimeEnd - TimeStart < 16) {
Thread.sleep(25-(TimeEnd - TimeStart));
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}