iOS简单的音效播放单例 (您可照搬代码)
来源:互联网 发布:增值税电子发票软件 编辑:程序博客网 时间:2024/05/21 07:47
.h
#import <Foundation/Foundation.h>
@interface MusicPlayManager : NSObject
+ (BOOL)playMusic:(NSString *)filename;//播放音乐
+ (void)pauseMusic:(NSString *)filename;//暂停播放
+ (void)stopMusic:(NSString *)filename;//停止音乐
@end
.m
#import "MusicPlayManager.h"
#import <AVFoundation/AVFoundation.h>
@interface MusicPlayManager()
@end
@implementation MusicPlayManager
/**
*存放所有的音乐播放器
*/
static NSMutableDictionary *_musicPlayers;
+ (NSMutableDictionary *)musicPlayers{
if (_musicPlayers==nil) {
_musicPlayers=[NSMutableDictionary dictionary];
}
return _musicPlayers;
}
+ (BOOL)playMusic:(NSString *)filename{
if (!filename) return NO;
AVAudioPlayer *player = [self musicPlayers][filename];
if (!player) {
NSURL *url=[[NSBundle mainBundle]URLForResource:filename withExtension:nil];
if (!url) return NO;
//创建播放器
player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
//缓冲
if (![player prepareToPlay]) return NO;//如果缓冲失败,那么就直接返回
//存入字典
[self musicPlayers][filename]=player;
if ([filename isEqualToString:@"BGM.mp3"]) {
[player setNumberOfLoops:-1];//设置循环播放
}
// player.volume = 0.1;//声音大小
}
//播放
if (![player isPlaying]) {
return [player play];//如果当前没处于播放状态,那么就播放
}
return YES;//正在播放
}
+ (void)pauseMusic:(NSString *)filename{
if (!filename) return;
AVAudioPlayer *player=[self musicPlayers][filename];
[player pause];
}
+ (void)stopMusic:(NSString *)filename{
if (!filename) return;
AVAudioPlayer *player=[self musicPlayers][filename];
[player stop];
[[self musicPlayers] removeObjectForKey:filename];
}
@end
注意:使用此单例不可加全局断点。
- iOS简单的音效播放单例 (您可照搬代码)
- iOS 简单播放音效
- ios-播放音效的简单实现
- QSound一句代码播放简单的音效
- iOS开发- 音效的播放
- iOS —音效的播放
- IOS音效播放 添加音效
- IOS音乐和音效的加载播放
- iOS开发—01音效的播放
- iOS开发 AudioServices(音效播放)的使用
- 播放简单音效
- 播放ios系统音效
- IOS----播放音效
- iOS 播放音效
- iOS 之音效播放
- 播放音效 iOS
- iOS 播放音效
- iOS 播放音效
- RecyclerView item监听探究
- 嵌入式linux中SPI应用开发
- Mybatis3源码分析(21)-Mapper实现-动态代理
- nodejs - multer模块教程,使用multer进行附件上传
- POJ 3083图搜 bfs+dfs
- iOS简单的音效播放单例 (您可照搬代码)
- 【数据结构】堆排序
- Java并发编程类学习二(线程的包装)
- rake的相关操作
- Android 判断字符串是不是是身份证、邮箱、银行卡、手机号、中文 1
- centos安装测试heartbeat
- MyEclipse Ctrl+Alt+Down 变成旋转屏幕解决方法
- 剑指offer编程练习(Program1)
- 在Angular.js使用组合+依赖注入而不是继承