在iOS游戏开发中播放背景音乐的任何其他方式?

Posted

技术标签:

【中文标题】在iOS游戏开发中播放背景音乐的任何其他方式?【英文标题】:Any other way to play background music in iOS game development? 【发布时间】:2011-10-11 16:21:57 【问题描述】:

我现在有一个问题。我用 cocos2d 为 iPad 开发游戏应用程序。在我的应用程序中,我使用背景音乐。当我使用 cocos2d 音乐方法 SimpleAudioEngine 时,我得到了泄漏。但是,我的老板不希望我们的应用程序出现泄漏。除了使用 SimpleAudioEngine 并且不会泄漏之外,还有其他播放背景音乐的方法吗?

感谢之前。问候。

【问题讨论】:

你不能只用AVAudioPlayer吗? 除了使用 AVAudioPlayer 之外,还有什么其他方法可以在 ios 中设置音乐? 【参考方案1】:

你怎么知道你有泄漏?很多时候,被报告为泄漏的东西并不是真正的泄漏,或者您自己的代码中的泄漏。特别是静态分析器只提出建议,但他的假设经常是错误的。

您可能还想联系库作者 Steve Oldmeadow,他可以在 cocos2d 论坛上找到。至少他可以确认一个错误,或者解释为什么它不是泄漏。

其次,我不会过分强调泄漏。假设您每次开始播放音乐时都会泄漏 16 个字节。您必须启动音乐 16.000 次才能泄露 16 KB。这在您的应用中的可能性有多大,您“需要”这 16 KB 的程度有多大?

第三,告诉你的老板你修复了漏洞。如果他不想在应用程序中泄漏,他显然不是一个(好的)程序员。我知道这是一个谎言,而且我知道会有一些程序员会恨我。但实际上,在你花费数小时甚至数天来寻找一种“更好”的播放音乐方式(可能还有其他副作用)而不是使用在数百个 iPhone 应用程序中经过验证的方法之前,这样一个善意的谎言将为你的老板节省一大笔钱。

我认为太多人认为泄漏内存等于应用程序经常崩溃。情况并非如此,除非泄漏很严重,导致内存不足错误或在某些情况下出现内存碎片。

【讨论】:

如果我没记错的话,有问题的泄漏是相当大的,每次 512 个字节。我从来没有设法确切地找出导致它的原因,但它也从来不是一个值得花太长时间解决解决方案的问题。此外,静态分析器从未检测到它,我只在泄漏工具上见过它。简而言之,我同意这个答案,但我建议向你的老板解释泄漏是在代码中,你无法更改而不会给自己带来更多问题。 你是对的,如果泄漏如此严重,并且每次都发生在所有用户身上,则应将其报告为 CocosDenshion 中的错误。【参考方案2】:

您可以使用SoundMaster 引擎代替CocosDension 声音引擎ARC 支持、内存管理 (NO LEAKS) 和许多其他功能,例如 淡入/淡出相对音量效果或淡入淡出

【讨论】:

以上是关于在iOS游戏开发中播放背景音乐的任何其他方式?的主要内容,如果未能解决你的问题,请参考以下文章

IOS Audio - 加快音乐播放速度

检测 Android/iOS 设备是不是已经通过 Unity3D 播放音乐

CDAudioManager (cocos2d, ios) 如何混合游戏音乐和背景音乐,让它们同时播放

iOS+Swift:为啥音乐不能在 iPad 上播放?

iOS - 从后台程序访问输出音频

IOS5 - 如何在以编程方式创建的视图中播放视频?