一.头文件
1 #import2 #import 3 4 @interface ChaosAudioTool : NSObject 5 6 #pragma mark - 播放音乐 7 // 播放音乐 musicName : 音乐的名称 8 + (AVAudioPlayer *)playMusicWithMusicName:(NSString *)musicName; 9 // 暂停音乐 musicName : 音乐的名称10 + (void)pauseMusicWithMusicName:(NSString *)musicName;11 // 停止音乐 musicName : 音乐的名称12 + (void)stopMusicWithMusicName:(NSString *)musicName;13 14 #pragma mark - 音效播放15 // 播放声音文件soundName : 音效文件的名称16 + (void)playSoundWithSoundname:(NSString *)soundname;17 18 @end
二..m文件方法的实现
1 #import "ChaosAudioTool.h" 2 3 @implementation ChaosAudioTool 4 5 static NSMutableDictionary *_soundIDs; 6 static NSMutableDictionary *_players; 7 8 + (void)initialize 9 {10 _soundIDs = [NSMutableDictionary dictionary];11 _players = [NSMutableDictionary dictionary];12 }13 14 + (AVAudioPlayer *)playMusicWithMusicName:(NSString *)musicName15 {16 assert(musicName);17 18 // 1.定义播放器19 AVAudioPlayer *player = nil;20 21 // 2.从字典中取player,如果取出出来是空,则对应创建对应的播放器22 player = _players[musicName];23 if (player == nil) {24 // 2.1.获取对应音乐资源25 NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:musicName withExtension:nil];26 27 if (fileUrl == nil) return nil;28 29 // 2.2.创建对应的播放器30 player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileUrl error:nil];31 32 // 2.3.将player存入字典中33 [_players setObject:player forKey:musicName];34 35 // 2.4.准备播放36 [player prepareToPlay];37 }38 39 // 3.播放音乐40 [player play];41 42 return player;43 }44 45 + (void)pauseMusicWithMusicName:(NSString *)musicName46 {47 assert(musicName);48 49 // 1.取出对应的播放50 AVAudioPlayer *player = _players[musicName];51 52 // 2.判断player是否nil53 if (player) {54 [player pause];55 }56 }57 58 + (void)stopMusicWithMusicName:(NSString *)musicName59 {60 assert(musicName);61 62 // 1.取出对应的播放63 AVAudioPlayer *player = _players[musicName];64 65 // 2.判断player是否nil66 if (player) {67 [player stop];68 [_players removeObjectForKey:musicName];69 player = nil;70 }71 }72 73 #pragma mark - 音效的播放74 + (void)playSoundWithSoundname:(NSString *)soundname75 {76 // 1.定义SystemSoundID77 SystemSoundID soundID = 0;78 79 // 2.从字典中取出对应soundID,如果取出是nil,表示之前没有存放在字典80 soundID = [_soundIDs[soundname] unsignedIntValue];81 if (soundID == 0) {82 CFURLRef url = (__bridge CFURLRef)[[NSBundle mainBundle] URLForResource:soundname withExtension:nil];83 84 if (url == NULL) return;85 86 AudioServicesCreateSystemSoundID(url, &soundID);87 88 // 将soundID存入字典89 [_soundIDs setObject:@(soundID) forKey:soundname];90 }91 92 // 3.播放音效93 AudioServicesPlaySystemSound(soundID);94 }95 96 @end