AVAudioPlayer 本地音频设置番外篇:后台定时修改音频音量NSTimer
AVAudioPlayer 本地音频设置番外篇:后台定时修改音频音量NSTimer设备/引擎:Mac(11.6)/cocos开发工具:Xcode(13.0)开发语言:Objective-c/c++开发需求:满足后台定时修改音频音量本篇其实是想说明一下NSTimer的相关问题,同时涉及到音频的设置问题,所以就算是AVAudioPlayer的番外篇吧!需求很明确,就是希望在特定时间音频音量逐渐削弱,再
AVAudioPlayer 本地音频设置番外篇:后台定时修改音频音量NSTimer
设备/引擎:Mac(11.6)/cocos
开发工具:Xcode(13.0)
开发语言:Objective-c/c++
开发需求:满足后台定时修改音频音量
本篇其实是想说明一下NSTimer的相关问题,同时涉及到音频的设置问题,所以就算是AVAudioPlayer的番外篇吧!
需求很明确,就是希望在特定时间音频音量逐渐削弱,再在另一特定时间音频逐渐停止播放!其实一开始是想在程序中用c++来写,基于之前黑屏状态下程序挂起的问题,所以就pass了这个想法,转而用OC代码来进行定时设定!
项目中的代码如下:
1.在.h文件中声明一下
NSTimer *timerReduce;
2.在.mm文件中实现
if (!timerReduce) {
// [timer setFireDate:[NSDate distantPast]];
timerReduce = [NSTimer timerWithTimeInterval:SleepManager::sharedManager()->audioTime*0.66 target:self selector:@selector(volumeSub) userInfo:nil repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:timerReduce forMode:NSDefaultRunLoopMode];
// SleepManager::sharedManager()->audioPlayed[audiosIndex]=1;
}
看过之前文章的应该知道之前我的代码主要以c++为主,再调用OC代码,完成功能需求。但此次准备使用NSTimer,其中需要调用的方法必须用OC代码,所以就索性将之前AVAudioPlayer相关的代码改为纯OC代码。
新增一个volumeSub方法,主要是用来声音在固定时间音量逐渐减弱。代码如下:
-(void)volumeSub{
//设置音量
CCLOG("---%d---",GameManager::sharedManager()->audioCounts);
if (SleepManager::sharedManager()->whichScene==0) {
for (int i=0; i<4; i++) {
[player[i] setVolume:player[i].volume*0.8 fadeDuration:2.0];
}
}else if(SleepManager::sharedManager()->whichScene==1){
[player[4] setVolume:player[4].volume*0.7 fadeDuration:2.0];
}else if(SleepManager::sharedManager()->whichScene==2){
for (int i=0; i<3; i++) {
[player[i+5] setVolume:player[i+5].volume*0.7 fadeDuration:2.0];
}
}
}
其余部分跟之前C++的大同小异,只是改成了OC代码,所以就不再展示相关代码,若有需要可以翻看之前的笔记查看,也可私信咨询。
本次项目中因为涉计到后台播放,调控音量等等,所以未直接使用cocos代码实现。
希望给大家提供一些帮助!!!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)