因为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();
}
}
}
使用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();
}
}
}
解决方案 »
- 关于android客户端和server端数据交互安全求教
- android 通讯录软件联系人重复问题
- 力求基于XMPP协议的Asmack的API的Android平台下的IM
- 应用程序卸载问题
- Android怎样实现双缓冲?----绘制地图时怎样提高效率?
- 求android个立即刷新页面的方法,invalidate不好用。
- 如何减少插件与屏幕边缘的缝隙
- 滑动listview出现checkbox错位的问题,急待解决。。
- android 4.3版本模拟器运行时出现的异常
- 请问android studio中如何正确使用support-v4包?
- 请问在android系统中如何用Socket发送一个结构体,并且和VC程序互相解析结构体
- 真心求救啊!编辑框内的内容自动上移这是啥情况
logic();
myDraw();
以后必然毫秒数不同啊