使用 Sprite Kit 画线时播放声音

Posted

技术标签:

【中文标题】使用 Sprite Kit 画线时播放声音【英文标题】:Playing a sound while drawing a line with Sprite Kit 【发布时间】:2015-03-23 17:14:19 【问题描述】:

我正在考虑在 ios 中使用 Sprite Kit 制作一个绘图应用程序,使用 swift 或 Objective C。

有一个教程here 展示了如何使用精灵套件绘制一条线。这很棒,但对于我的应用程序,我想要更多。我希望应用程序在绘制线条时播放音效。声音的音调取决于用户画线的速度。用户移动手指的速度越快,声音的音调就越高。我发现关于在 sprite kit 中播放声音的所有内容都是背景音乐和播放单个声音。有人能指出我实现目标的正确方向吗?

【问题讨论】:

右方向 - 使用 touchesMoved 方法跟踪触摸坐标变化的速度并相应地运行声音代码。顺便说一句,AVAudioPlayer 没有音高功能,因此您必须为此提出自己的解决方案。 正如@sangony 所说,AVAudioPlayer 不支持此类功能。您应该查看其他音频 API。例如,您可以尝试使用 AUSampler 音频单元。有一个名为 AU Lab 的免费应用程序,您可以使用它来创建一个 aupreset 文件,然后由 AUSampler 加载。要了解有关 Apple 音频 API 和音频单元的更多信息,我会向您推荐这本书 amazon.com/Learning-Core-Audio-Hands-On-Programming/dp/… 【参考方案1】:

您可能希望在很短的持续时间(可能是 0.25 秒?您需要尝试,但他们会都必须是相同的持续时间)。

假设您有 30 个不同的样本,line-0.wav .. line-29.wav。然后您需要做的就是适当地计算用户拖动的速度,并使用一些函数将拖动速度的可能范围映射到样本索引的整数范围。只要在拖动过程中,就反复播放相应的声音。

【讨论】:

以上是关于使用 Sprite Kit 画线时播放声音的主要内容,如果未能解决你的问题,请参考以下文章

Sprite Kit 中的 AVAudioPlayer“加载资源失败”原因资源“无法加载 sound.caf”

如何在 iOS Sprite Kit SKVideoNode 中控制视频的播放?

Sprite Kit翻转播放器XScale

我的 Sprite Kit 游戏第一次播放音频变慢?

为啥我的音频会在 Sprite Kit 场景转换之前播放?

使用 Touch iOS Sprite Kit 画线