音效播放工具类的简单封装
//
//  AudioTool.h
//  工具类

#import <Foundation/Foundation.h>

@interface AudioTool : NSObject

/**
 *  播放音效
 *
 *  @param filename 音效文件名
 */
+ (void)playSound:(NSString *)filename;

/**
 *  销毁音效
 *
 *  @param filename 音效文件名
 */
+ (void)disposeSound:(NSString *)filename;
@end

//
//  AudioTool.m


#import "AudioTool.h"
#import <AVFoundation/AVFoundation.h>

@implementation AudioTool

//字典 filename作为key,soundID作为value
//存放所有的音效ID
static NSMutableDictionary *_soundIDDict;

/**
 *  初始化
 */
+ (void)initialize
{
    _soundIDDict = [NSMutableDictionary dictionary];
}

/**
 *  播放音效
 *
 *  @param filename 音效文件名
 */
+ (void)playSound:(NSString *)filename
{
    if (!filename) return;
    
    //1.从字典中取出soundID
    SystemSoundID soundID = [_soundIDDict[filename] unsignedIntValue];
    if (!soundID) { //创建
        
        //加载音效文件
        NSURL *url = [[NSBundle mainBundle] URLForResource:filename withExtension:nil];
        if(!url) return;
        
        //创建音效ID
        AudioServicesCreateSystemSoundID((__bridge CFURLRef _Nonnull)(url), &soundID);
        
        //存入字典
        _soundIDDict[filename] = @(soundID);
    }
   
    
    //2.播放
    AudioServicesPlaySystemSound(soundID);
    
}

/**
 *  销毁音效
 *
 *  @param filename 音效文件名
 */
+ (void)disposeSound:(NSString *)filename
{
    if (!filename) return;

    SystemSoundID soundID = [_soundIDDict[filename] unsignedIntValue];
    if (!soundID) {
        //销毁音效ID
        AudioServicesDisposeSystemSoundID(soundID);
        
        //从字典中移除
        [_soundIDDict removeObjectForKey:filename];
    }

}

@end

使用:

//
//  ViewController.m


#import "ViewController.h"
#import "AudioTool.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

}

- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //播放
    [AudioTool playSound:@"m_03.wav"];
    [AudioTool playSound:@"m_04.wav"];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    
    //销毁音频ID
    [AudioTool disposeSound:@"m_03.wav"];
}

@end


阅读更多
个人分类: iOS
想对作者说点什么? 我来说一句

Android游戏音效播放工具类

2014年03月29日 42KB 下载

没有更多推荐了,返回首页

不良信息举报

音效播放工具类的简单封装

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭