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添加音效的更多相关文章

  1. xcode添加背景音乐/音效

    xcode添加音效:http://www.cnblogs.com/jiayongqiang/p/5625886.html 背景音乐: ios播放音乐时会用到一个叫做AVAudioPlayer的类,这个 ...

  2. [Unity3D]添加音效说明

    添加音效组件并添加音乐资源 其中Pitch用来提高和降低音调的,比如可以和赛车游戏的轮胎绑定,当轮胎越快,则音调越高 2D/3D音效:2D音效和摄影家的距离无关,可以看做是一个背景音乐:而3D音效则是 ...

  3. Xcode添加摄像机访问权限<转>

    转帖地址:http://www.manew.com/thread-97708-1-1.html ============================================== ios系统 ...

  4. IOS开发效率之为Xcode添加常用的代码片段

    IOS开发效率之为Xcode添加常用的代码片段 原文地址:http://blog.csdn.net/pingchangtan367/article/details/30041285 tableview ...

  5. xcode添加build phase

    [xcode添加build phase] xcode版本:5.0.2,找了半天,终于找到add build phase的方法,如下图.

  6. xcode添加快捷代码块

    添加快捷代码块 在开发过程中,一些常用的代码段,我们可以设置成快捷代码段来快速实现代码的编写. 如上图中的属性的设置,它们都有相同重复的代码@property (nonatomic, strong), ...

  7. 【转】为Xcode添加删除行、复制行快捷键

    原文网址:http://www.jianshu.com/p/cc6e13365b7e 在使用eclipse过程中,特喜欢删除一行和复制一行的的快捷键.而恰巧Xcode不支持这两个快捷键,再一次的恰巧让 ...

  8. (转)为Xcode添加删除行、复制行快捷键

    转摘链接:http://www.jianshu.com/p/cc6e13365b7e 在使用eclipse过程中,特喜欢删除一行和复制一行的的快捷键.而恰巧Xcode不支持这两个快捷键,再一次的恰巧让 ...

  9. 62.Xcode 添加代码块

    1. Xcode创建一个新项目,打开一个.h或者.m文件 2.我举例以设置属性为例 #import <UIKit/UIKit.h> @interface ViewController : ...

随机推荐

  1. php二维数组排序方法(转自http://www.3lian.com/edu/2013/12-26/118882.html)

    一维数组排序可以使用asort.ksort等一些方法进程排序,相对来说比较简单.二维数组的排序怎么实现呢?使用array_multisort和usort可以实现 例如像下面的数组:    代码如下: ...

  2. ORA-02049: 超时: 分布式事务处理等待锁的解决方法

    是其他地方执行了操作没有提交,把其他地方提交了就好了

  3. 更改RAC日志组

    alter database add logfile thread 1 group 5 ('+DATA/idb/onlinelog/group5.log') size 256m;alter datab ...

  4. 12. Binary Tree Postorder Traversal && Binary Tree Preorder Traversal

    详见:剑指 Offer 题目汇总索引:第6题 Binary Tree Postorder Traversal            Given a binary tree, return the po ...

  5. Spark SQL External Data Sources JDBC简易实现

    在spark1.2版本中最令我期待的功能是External Data Sources,通过该API可以直接将External Data Sources注册成一个临时表,该表可以和已经存在的表等通过sq ...

  6. 常见面试问题 - Useful Links

    1. Data Structure & Algorithm - 二叉树 http://baike.baidu.com/link?url=jKNdOOipbp-gloTVmSU4PT2mVB94 ...

  7. 12. Linux在线升级yum

    软件包仓库源 将yum源放在/etc/yum.repo.d root@cfm880 Packages]# cd /etc/yum.repos.d/[root@cfm880 yum.repos.d]# ...

  8. js复制input 框中的值

    function copy(){ var Url2=document.getElementById("copyValue"); Url2.select(); document.ex ...

  9. jQuery 根据JSON数据动态生成表格

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  10. XidianOJ 1120 Gold of Orz Pandas

    题目描述 Orz Panda is addicted to one RPG game. To make his character stronger, he have to fulfil tasks ...