音效播放

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

//定义一个全局的缓存池变量,  因为音效它会一直添加到内存中,当继续添加音效时, 内存储存不了,此时就会将内存底部的一个音效移除, 然后添加新的, 虽然这个能够存储音效, 但是对与内存而言,任然是饱满, 所以我们这个就定义一个缓存池, 第一是不让相同的音效重复加载到内存中区,第二是当内存发出内存警告时, 我们可以在applicationDidReceiveMemoryWarning:(UIApplication *)application这个方法中将缓存池中的音频对象移除,从而达到内存优化的目的
static NSMutableDictionary * dict ;

@implementation PlayAudioTool

//当类被加载, 也就是被编译是就会调用这个方法, 给缓存池字典初始化
+(void)load{

    dict = [NSMutableDictionary dictionary];

}

+(void)playAudioWithFileName:(NSString *)fileName isAlert:(BOOL)alert{

    //获取音效资源
    NSString * path = [[NSBundle mainBundle]pathForResource:fileName ofType:nil];

    NSURL * url = [NSURL fileURLWithPath:path];

    //创建一个soundID
    SystemSoundID  sound ;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef _Nonnull)(url), &sound);

    if (alert) {

        //播放时带振动
            AudioServicesPlayAlertSound(sound);
    }else{

        //播放
        //播放是音效, 不震动
        AudioServicesPlaySystemSound(sound);
    }

}

+(void)clearMeary {

    for (NSString * key in dict) {

        SystemSoundID sound = [dict[key]unsignedIntValue];

        AudioServicesDisposeSystemSoundID(sound);

    }
    //将缓存池中的所有对象移除
    [dict removeAllObjects];

}

  

时间: 2024-10-15 00:08:22

音效播放的相关文章

(九十五)音效播放方法和工具类的制作

音效通过AVFoundation框架实现,是通过函数而不是方法,因此需要进行桥接等操作,具体步骤如下. 进行音效播放,首先要得到音效的URL(只能是本地音频),然后转换为音效ID(唯一),通过ID播放音效. [音效播放方法] ①导入框架主头文件 #import <AVFoundation/AVFoundation.h> ②通过Bundle拿到本地音效,然后调用AudioServicesCreateSystemSoundID函数得到音效ID,ID为0代表无效,以此为依据可进行懒加载 @inter

iOS开发拓展篇—音效播放

iOS开发拓展篇—音效播放 一.简单介绍 简单来说,音频可以分为2种 (1)音效 又称“短音频”,通常在程序中的播放时长为1~2秒 在应用程序中起到点缀效果,提升整体用户体验 (2)音乐 比如游戏中的“背景音乐”,一般播放时间较长 框架:播放音频需要用到AVFoundation.framework框架 二.音效的播放 1.获得音效文件的路径 NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_03.wav" withExtens

Unity3d 背景、音效 播放 简单demo

仅实现功能,AudioListener在MainCamera中 using UnityEngine; using System.Collections; using System.Collections.Generic; public class MusicManger : MonoBehaviour { AudioSource _backMusicSource = null; AudioSource _SoundSource = null; //public string musicName

项目总结之音效播放问题

DionysosLai([email protected]) 2014/12/25 Cocos2dx使用的是一个比较简单.粗糙的语音系统,从语音系统名字SimpleAudioEngine,即可看出来这个系统本身没有多大的复杂难度,因此使用音效系统时,会有一些比较隐晦的细节,需要我们在开发时特别注意. 语音和音效的区别          一般来说,在cocos2dx中,只用两种声音通道模式,一个backmuscic,另一个是effectmusic.前者用来播放背景音乐,后者一般用来播放音效.背景音

Unity3d之音效播放和调用手机震动

http://blog.csdn.net/sunshine_1984/article/details/12943979 今天研究了下Unity3d音效播放相关内容,整理下实现细节. 1,添加音效文件到Assets/Resources目录,我这里添加到Assets/Resources/audio目录了. 2,新建C# Script命名为audio 3,编写audio.cs代码如下(里面注释很清楚了): using UnityEngine;using System.Collections; publ

Html5 音效播放器

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HTML5音乐播放器</title> </head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <b

IOS开发之音效/音频播放

音频播放: 1.音效播放 2.音乐播放 (1)音频播放 : <1>系统声音 短小的声音 使用的框架 AudioToolBox <2>1.AudioServicesPlaySystemSound 播放系统声音 2.AudioServicesPlayAlertSound播放系统声音有震动 <3>使用: 1.声明声音的ID  通过声音的id来区分是哪一个音效  无符号整形 2.创建声音的服务 (告诉系统有一个可以使用的soundID) 需要声音文件路径和声音的ID 3.播放声

Cocos2d 播放音效

Cocos2D对音乐/音效播放的封装已经很好了,下边是例子: 定义2个文件: [cpp] view plaincopy #define MUSIC_FILE        "LOLBgMusic.mp3" #define EFFECT_FILE      "Attack.wav" 在初始化的时候预加载音乐/音效文件: [cpp] view plaincopy //预加载 CocosDenshion::SimpleAudioEngine::sharedEngine()

iOS开发——音频篇——音效的播放

一.简单介绍 简单来说,音频可以分为2种 (1)音效 又称“短音频”,通常在程序中的播放时长为1~2秒 在应用程序中起到点缀效果,提升整体用户体验 (2)音乐 比如游戏中的“背景音乐”,一般播放时间较长 框架:播放音频需要用到AVFoundation.framework框架 二.音效的播放 1.获得音效文件的路径 NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_03.wav" withExtension:nil]; 2.加载