博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发--音乐文件播放工具类的封装(包含了音效的封装)
阅读量:6855 次
发布时间:2019-06-26

本文共 2907 字,大约阅读时间需要 9 分钟。

一.头文件

1 #import 
2 #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

 

转载地址:http://clyyl.baihongyu.com/

你可能感兴趣的文章
Java集合框架面试问题集锦
查看>>
Qt应用程序发布指南
查看>>
紫光SSD评测:国产颗粒可与洋品牌一战
查看>>
学生成绩管理项目
查看>>
一篇通俗易懂的repo教程
查看>>
TeamTalk初学笔记2---关于win-client【第一篇】
查看>>
简单计算器
查看>>
MySQL C API programming tutorial
查看>>
windows10下vs2013生成的winform程序在桌面的图标显示不正确的问题记录
查看>>
Swift 2中的available属性
查看>>
实时协同编辑的实现
查看>>
Raycasting光线投射
查看>>
Intellij idea run/debug Maven项目配置文件在非resources目录下找不到配置文件
查看>>
Linux 用户间通信的实用小程序
查看>>
infoblox nios6小记
查看>>
CAS配置-tomcat https配置
查看>>
linux查看本机外网ip
查看>>
EE 磁芯 参数 汇总
查看>>
共享存储之drbd应用详解及pacemaker实现高可用共享存储(一)
查看>>
LVS 自开发脚本
查看>>