SpriteBuilder 学习笔记八

Chapter 11

Audio and Labels

你会学到如何播放audio,包括音效和音乐(sound effects and music)。sound effects可以通过Timeline播放,但是大部分都需要使用ObjectAL编程,ObjectAL是Cocos2D和SpriteBuilder使用的audio engine。

第二部分是关于Labels的------特别是,TrueType font效果。

Introducing ObjectAL

Cocos2D包括ObjectAL audio框架,用于播放sound effects和music。ObjectAL是一个建立在OpenAL API上的框架,用于播放short sound effects很好用(.wav, .caf, .aiff),和Apple的AVAudioPlayer,它在decode和stream long-running audio时很好用(mp3,m4a,mp4,ac3)。

OALSimpleAudio singleton为所有必要的audio needs提供了简单易用的编程接口。可以概括为两种类型的audio:effects for short,memory-buffered sound effects,  and bg(background)for long-running audio like music and speech.

effects commands通过OpenAL播放,background commands通过AVAudioPlayer播放。

了解这两种类型的不同很重要:

Caution:不是所有的audio格式在移动设备上都是支持的。比如OGG和FLAC文件都不可以在IOS上播放,最好使用最通用的格式:对于sound effects使用.caf, .wav格式,对于long-running audio使用mp3或者m4a格式。

“You’ll learn more about OALSimpleAudio’s programming interface shortly in this chapter. Suffice it to say that ObjectAL covers all of your audio needs. If you need more functionality than offered by OALSimpleAudio but don’t know where to start (besides the documentation and ObjectAL demos, obviously), I recommend you take a look at how the OALSimpleAudio class uses the ObjectAL, OALAudioTrack, and OALAudioSession classes.
You can dig deeper into ObjectAL on its homepage at http://kstenerud.github.io/ObjectAL-for-iPhone, where you’ll find the documentation and class reference as well as the download archive, which contains additional demo projects.”

摘录来自: Steffen Itterheim. “Learn SpriteBuilder for iOS Game Development”。 iBooks.

Using Audio Files in SpriteBuilder

尽管你可以直接添加audio文件到Xcode项目中,但是建议你让SpriteBuilder来管理所有的audio文件,不论它们是否在Timeline中用到。

Importing Audio into SpriteBuilder

如果你使用SpriteBuilder来管理你的audio文件,你不需要担心audio格式细节。如果你导入未压缩的audio文件,比如WAV文件是最好的。Underneath,you see the duration expressed in seconds and an indication of whether the audio file is mono or stereo.在底层,有一个publishing settings,你可以选择CAF格式(uncompressed)针对short sound effects,和MP4格式(compressed)针对long-running audio.MP4格式同时允许你改变quality setting,quality越低,最后的文件越小。默认的audio quality settings在File-》Project Settings对话框中打开。

SpriteBuilder会默认输入的audio文件短于15s的为sound effect,并且选择对应的CAF格式。否则,就是MP4格式。同时注意,目前,只有.caf和.wav的audio files可以被导入。

Playing Sound Effects via the Timeline

在SpriteBuilder中,你可以添加sound-effects 关键帧在任何Timeline中。如果你需要和其他Timeline animations加锁的audio playback,那么这一点就很有用了。Timeline sound effects会通过OALSimpleAudio的effects channel播放,thus using OpenAL for playback regardless of the file format.

Caution:如果有一个Timeline的CCBAnimationManager的node 释放了,那么通过Timeline播放的sound effect会被stopped或者根本不会开始播放。这很典型的会影响audio文件的playback(那些持续时间比Timeline长的,而且node从scene中移除了)----比如,通过一个Callbacks 关键帧。(This typically affects the playback of audio files with a duration longer than the Timeline whose end has the node removed from the scene----for instance, via a Callbacks keyframe).

在SpriteBuilder中,打开MainMenuButtons.ccb。目标是在logo和buttons出现的时候,synchronize sound-effects playback。

你可以添加Sound effects 关键帧,就像添加Callbacks关键帧一样,按住Option键,左键点击添加一个关键帧。

时间: 2024-11-13 08:50:49

SpriteBuilder 学习笔记八的相关文章

angular学习笔记(八)

本篇介绍angular控制视图的显示和隐藏: 通过给元素添加ng-show属性或者ng-hide属性来控制视图的显示或隐藏: ng-show: 绑定的数据值为true时,显示元素,值为false时,隐藏元素 ng-hide: 绑定的数据值为true时,隐藏元素,值为false时,显示元素 (其实只要用到其中一个就可以了) 下面来看个简单的例子,点击按钮可以显示/隐藏元素: <!DOCTYPE html> <html ng-app> <head> <title>

Linux System Programming 学习笔记(八) 文件和目录管理

1. 文件和元数据 每个文件都是通过inode引用,每个inode索引节点都具有文件系统中唯一的inode number 一个inode索引节点是存储在Linux文件系统的磁盘介质上的物理对象,也是LInux内核通过数据结构表示的实体 inode存储相关联文件的元数据 ls -i 命令获取文件的inode number /* obtaining the metadata of a file */ #include <sys/types.h> #include <sys/stat.h>

马哥学习笔记八——LAMP编译安装之PHP及xcache

1.解决依赖关系: 请配置好yum源(可以是本地系统光盘)后执行如下命令: # yum -y groupinstall "X Software Development" 如果想让编译的php支持mcrypt扩展,此处还需要下载如下两个rpm包并安装之: libmcrypt-2.5.7-5.el5.i386.rpm libmcrypt-devel-2.5.7-5.el5.i386.rpm 2.编译安装php-5.4.13 首先下载源码包至本地目录. # tar xf php-5.4.13

Lua学习笔记(八):数据结构

table是Lua中唯一的数据结构,其他语言所提供的数据结构,如:arrays.records.lists.queues.sets等,Lua都是通过table来实现,并且在Lua中table很好的实现了这些数据结构. 1.数组 在Lua中通过整数下标访问table中元素,既是数组,并且数组大小不固定,可动态增长.通常我们初始化数组时,就间接地定义了数组的大小,例如: 1 a = {} -- new array 2 for i=1, 1000 do 3 a[i] = 0 4 end 5 6 --数

初探swift语言的学习笔记八(保留了许多OC的实现)

尽管swift作为一门新语言,但还保留了许多OC的机制,使得swift和OC更好的融合在一起.如果没有OC基础的先GOOGLE一下. 如:KVO,DELEGATE,NOTIFICATION. 详见DEMO. import Foundation @objc // 需要打开objc标识,否则@optional编译出错 protocol kvoDemoDelegate { func willDoSomething() @optional func didDoSomething() //可选实现, }

《Hibernate学习笔记八》:组件映射

<Hibernate学习笔记八>:组件映射 前面介绍了一对一的单向.双向外键关联,例如,学生证和学生是一个一对一的关系.这篇博文主要是介绍下组件映射,即一个是另一个的一部分,例如,学生证的信息也可以作为学生信息的一部分,即在数据库中只存在学生一个表,而不是有学生和学生证两个表,并且这两个表中有一个一对一的关联关系. 如下: 有人或许会说,那我们就将学生和学生证的信息写在一个类中,则就不需要组件映射了,确实可以这样,但是,根据类的设计原则,我们一般都会将其设计为两个类,然后将学生证的信息作为一个

iOS学习笔记(八)——iOS网络通信http之NSURLConnection

转自:http://blog.csdn.net/xyz_lmn/article/details/8968182 移动互联网时代,网络通信已是手机终端必不可少的功能.我们的应用中也必不可少的使用了网络通信,增强客户端与服务器交互.这一篇提供了使用NSURLConnection实现http通信的方式. NSURLConnection提供了异步请求.同步请求两种通信方式. 1.异步请求 iOS5.0 SDK NSURLConnection类新增的sendAsynchronousRequest:queu

python学习笔记八——正则表达式

1.元字符 []-常用来指定一个字符集:[abc];[a-z] -元字符在字符集中不起作用:[akm$] -补集匹配不在区间范围内的字符:[^5] ^-匹配行首 $-匹配行尾 \-后可加不同字符以表示不同意义,也可用于取消所有元字符 \d 匹配任何十进制数,相当于[0-9] \D 匹配任何非数字字符,相当于[^0-9] \s 匹配任何空白字符,相当于[\t\n\r\f\v] \S 匹配任何非空白字符 \w 匹配任何字母数字字符 \W 匹配任何非字母数字字符 *-匹配前一个字符零次或多次 +-至少

laravel3学习笔记(八)

原作者博客:ieqi.net ==================================================================================================== Web开发框最大的存在意义无疑是为开发者提供便利,这种被提供的便利不仅表现在对于整个应用接口上的梳理.组织和解耦,也表现在更多细微方便,比如各种工具的提供.Laravel3为开发者提供了各种有关web开发的工具,让开发者在开发应用时只需要关注于自身的业务,而不必在拘泥