xcode添加音效
背景音乐:http://www.cnblogs.com/jiayongqiang/p/5476069.html
音效:
一.介绍:
又称“短音频”,通常在程序中的播放时长为1~2秒.最长可以播放29.9s.
在最后会讲解如何将长音乐MP3格式,制作成xcode能识别的音效格式(wav/aac/m4a等等).
二、音效的播放
1.获得音效文件的路径
NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_03.wav" withExtension:nil];
2.加载音效文件,得到对应的音效ID
SystemSoundID soundID = 0;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &soundID);
3.播放音效
AudioServicesPlaySystemSound(soundID);
注意:音效文件只需要加载1次
4.音效播放常见函数总结
加载音效文件 AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID)
释放音效资源 AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)
播放音效 AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)
播放音效带点震动 AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)
#import "ViewController.h" //1.导入框架
#import <AVFoundation/AVFoundation.h> @interface ViewController () //2.定义一个SystemSoundID属性
@property (nonatomic, assign) SystemSoundID soundID;
@end @implementation ViewController //3.懒加载SoundID
- (SystemSoundID)soundID {
if (_soundID == ) {
// 3.1.获取资源的URL,音频文件要放在黄色文件夹中
NSURL *buyaoUrl = [[NSBundle mainBundle] URLForResource:@"buyao.wav" withExtension:nil]; // 3.2给SoundID赋值
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(buyaoUrl), &_soundID);
}
return _soundID;
} - (void)viewDidLoad {
[super viewDidLoad];
} - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
// 4.1.播放音效,没有振动效果
AudioServicesPlaySystemSound(self.soundID);
// 4.2.播放音效,在真机上带有振动效果
// AudioServicesPlayAlertSound(soundID);
}
三.将播放音效的功能封装成一个工具类.
1.创建一个类PQAudioTool继承自NSObject.
PQAudioTool.h文件:
#import <Foundation/Foundation.h> @interface PQAudioTool : NSObject
/**
* 播放音效
* @param soundName 音效名称
*/
+ (void)audioToolPlaySoundWithName:(NSString *)soundName;
/**
* 销毁音效
* @param soundName 音效名称
*/
+ (void)audioToolDisposeSoundWihtName:(NSString *)soundName;
@end
PQAudioTool.m文件:
#import "PQAudioTool.h"
#import <AVFoundation/AVFoundation.h> @interface PQAudioTool()
//在此处定义一个成员属性. 那么在类方法中无法取到.所以需要定义一个静态成员属性.
@end @implementation PQAudioTool //定义一个静态成员属性,会一直保存在内存中.属于类的. 不属于哪一个对象的.
//定义一个字典放赋值的soundID.
static NSMutableDictionary *_soundIDs;
+ (void)initialize {//该方法只会调用一次(前提是该类没有子类).
    _soundIDs = [NSMutableDictionary dictionary];
}
+ (void)audioToolPlaySoundWithName:(NSString *)soundName {
    // 1.从字典中取出音效的ID
    SystemSoundID soundID = [_soundIDs[soundName] unsignedIntValue];
    // 2.如果现在取出来的值是0
    if (soundID == ) {
        // 2.1.获取资源的URL
        NSURL *buyaoUrl = [[NSBundle mainBundle] URLForResource:soundName withExtension:nil];
        // 2.2.给SoundID赋值
        AudioServicesCreateSystemSoundID((__bridge CFURLRef)(buyaoUrl), &soundID);
        // 2.3.放入字典中
        _soundIDs[soundName] = @(soundID);
    }
    // 3.播放音效
    AudioServicesPlaySystemSound(soundID);
}
+ (void)audioToolDisposeSoundWihtName:(NSString *)soundName {
    // 1.从字典中取出音效的ID
    SystemSoundID soundID = [_soundIDs[soundName] unsignedIntValue];
    // 2.如果soundID有值,则销毁音效
    if (soundID) {
        AudioServicesDisposeSystemSoundID(soundID);
    }
}
@end
在viewController里调用
- (IBAction)buyaoClick:(id)sender {
    [PQAudioTool audioToolPlaySoundWithName:@"1-02 何かがおかしい.m4a"];
}
- (IBAction)oneClick:(id)sender {
     [PQAudioTool audioToolPlaySoundWithName:@"lose.aac"];
}
- (IBAction)twoClick:(id)sender {
     [PQAudioTool audioToolPlaySoundWithName:@"m_04.wav"];
}
四:将长音乐制作成小于30s的音效 1.打开iTunes
     
2.将需要制作的音乐导入iTunes
    
      
3.在iTunes中选择音乐-->右击-->显示简介
    
4.选择选项卡-->设置开始/结束时间-->好
    
5.选中音乐-->文件-->转换-->AAC
      
6.成功.直接将转换好的短音乐 拖拽出来即可使用.
      
xcode添加音效的更多相关文章
- xcode添加背景音乐/音效
		
xcode添加音效:http://www.cnblogs.com/jiayongqiang/p/5625886.html 背景音乐: ios播放音乐时会用到一个叫做AVAudioPlayer的类,这个 ...
 - [Unity3D]添加音效说明
		
添加音效组件并添加音乐资源 其中Pitch用来提高和降低音调的,比如可以和赛车游戏的轮胎绑定,当轮胎越快,则音调越高 2D/3D音效:2D音效和摄影家的距离无关,可以看做是一个背景音乐:而3D音效则是 ...
 - Xcode添加摄像机访问权限<转>
		
转帖地址:http://www.manew.com/thread-97708-1-1.html ============================================== ios系统 ...
 - IOS开发效率之为Xcode添加常用的代码片段
		
IOS开发效率之为Xcode添加常用的代码片段 原文地址:http://blog.csdn.net/pingchangtan367/article/details/30041285 tableview ...
 - xcode添加build phase
		
[xcode添加build phase] xcode版本:5.0.2,找了半天,终于找到add build phase的方法,如下图.
 - xcode添加快捷代码块
		
添加快捷代码块 在开发过程中,一些常用的代码段,我们可以设置成快捷代码段来快速实现代码的编写. 如上图中的属性的设置,它们都有相同重复的代码@property (nonatomic, strong), ...
 - 【转】为Xcode添加删除行、复制行快捷键
		
原文网址:http://www.jianshu.com/p/cc6e13365b7e 在使用eclipse过程中,特喜欢删除一行和复制一行的的快捷键.而恰巧Xcode不支持这两个快捷键,再一次的恰巧让 ...
 - (转)为Xcode添加删除行、复制行快捷键
		
转摘链接:http://www.jianshu.com/p/cc6e13365b7e 在使用eclipse过程中,特喜欢删除一行和复制一行的的快捷键.而恰巧Xcode不支持这两个快捷键,再一次的恰巧让 ...
 - 62.Xcode 添加代码块
		
1. Xcode创建一个新项目,打开一个.h或者.m文件 2.我举例以设置属性为例 #import <UIKit/UIKit.h> @interface ViewController : ...
 
随机推荐
- CPS冥想 - 1 重新审视CPS
			
这篇文章是在阅读Eric Lippert大神的MSDN Blog文章时同步写成的,其中主要是各种翻译,同时还混杂自己阅读文章的笔记和感想. 原博文地址 http://blogs.msdn.com/b/ ...
 - HTML音乐播放——切歌
			
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
 - WWDC2014之iOS使用动态库 framework【转】
			
from:http://www.cocoachina.com/industry/20140613/8810.html JUN 12TH, 2014 苹果的开放态度 WWDC2014上发布的Xcode6 ...
 - qt编程入门
			
面对qt编程,必须先知道qt中常用的类: QPushButton按钮类.QLabel标签类.QMessageBox对话框类.QCheckBox.QAction.QMenu.QStatusBar.QTo ...
 - Android ImageView显示本地图片
			
Android ImageView 显示本地图片 布局文件 <?xml version="1.0" encoding="utf-8"?> <R ...
 - [js]识别浏览器及版本
			
var userAgent = navigator.userAgent.toLowerCase();window.jQuery.browser = { version: (userAgent.m ...
 - 关于thinkphp 中的字段自动检查机制
			
在thinkphp中有很好用的自动检查机制$_validate() 但是必须与create接收配合使用 可以很方便的帮助我们去判断 namespace Home\Model;use Think\Mod ...
 - ThinkPHP 学习记录
			
index.php //入口文件 define('APP_DEBUG',True); //开启调试模式 define('APP_PATH','./Application/'); //定义应用目录 re ...
 - 数据库中int类型存在空数据开发过程中model和dal层处理方法
			
model层 public Int32? IsFullAttendance { get; set; } dal层 if (dr["IsFullAttendance"] + &qu ...
 - 邮件江湖群狼环伺 U-Mail邮件系统防狼有术
			
小时候听过一首儿歌<小兔子乖乖>,里面说到有条恶狼,常常冒充小兔子的“妈妈”,要求小兔 子开门,但小兔子谨守妈妈的训诫,就是不开门,直到辨别出妈妈在窗外的声音,才打开房门.如果我们将一些似 ...