之前项目中做了2个需求 一个是页面有两面大鼓,然后可以敲打 ,发出咚咚的声音,一个鼓为重音,一个鼓为低音。另一个需求是微信摇一摇那种咔嚓咔嚓 和叮咚一类的音效,简单整理了下代码。
首先需要声明的类为并加上代理
#import<AVFoundation/AVFoundation.h>
@interface ViewController ()<AVAudioPlayerDelegate>
其次需要声明两个全局的控件
AVAudioPlayer *avAudioPlayerUp; //播放器player
AVAudioPlayer *avAudioPlayerDown; //播放器player
再者我们需要提前建立好声音控件的各种属性
-(void)avPlaye{
//从budle路径下读取音频文件,mp3是你的音频格式
NSString *stringUp = [[NSBundlemainBundle] pathForResource:@"歌曲名"ofType:@"mp3"];
NSString *stringDown = [[NSBundlemainBundle] pathForResource:@"歌曲名"ofType:@"格式名"];
//把音频文件转换成url格式
NSURL *urlUp = [NSURLfileURLWithPath:stringUp];
NSURL *urlDown = [NSURLfileURLWithPath:stringDown];
//初始化音频类 并且添加播放文件
avAudioPlayerUp = [[AVAudioPlayeralloc] initWithContentsOfURL:urlUperror:nil];
avAudioPlayerDown = [[AVAudioPlayeralloc] initWithContentsOfURL:urlDownerror:nil];
//设置代理
avAudioPlayerUp.delegate =self;
avAudioPlayerDown.delegate =self;
//设置初始音量大小
// avAudioPlayer.volume = 1;
//设置音乐播放次数 -1为一直循环
avAudioPlayerUp.numberOfLoops =1;
avAudioPlayerDown.numberOfLoops =1;
//预播放
[avAudioPlayerUp prepareToPlay];
[avAudioPlayerDown prepareToPlay];
//从第几秒开始播放
avAudioPlayerUp.currentTime=0.;
avAudioPlayerDown.currentTime=0.;
}
最后我们需要在你需要播放音频的位置让它play就好了
[avAudioPlayerUp play];
[avAudioPlayerDown play];
注:当然如果你需要像我一样,是把一些时间较短,需要多次重复的音频来回播放的话你可以这样调用,来满足你的效果
- (void)playUp{
//开启音效
[avAudioPlayerUpstop];//结束音效
avAudioPlayerUp.currentTime=0.0;//让音频播放时间回到起点
[avAudioPlayerUpplay];//再次播放
}
最后加上两个,常用的代理
//播放完成时
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;
//解析出错时
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError * __nullable)error;
你一直比你想象中的强大~
感谢观看,学以致用更感谢!