我正在使用cocos2d爲iPhone和iPad開發遊戲,並且我需要能夠在另一個完成時精確播放聲音。 我有一個配樂片段被切成小塊,並且當一個完成和一個開始時,播放之間的最小間隙沒有空間。在iPhone上完美播放聲音
Btw。我無法將這些聲音粘貼到一個文件中,只是播放該文件,因爲這些文件的順序將被重新排列爲運行時。
我該如何做到這一點?
我正在使用cocos2d爲iPhone和iPad開發遊戲,並且我需要能夠在另一個完成時精確播放聲音。 我有一個配樂片段被切成小塊,並且當一個完成和一個開始時,播放之間的最小間隙沒有空間。在iPhone上完美播放聲音
Btw。我無法將這些聲音粘貼到一個文件中,只是播放該文件,因爲這些文件的順序將被重新排列爲運行時。
我該如何做到這一點?
隨着CocosDenshion你可以
[[CDAudioManager sharedManager] setBackgroundMusicCompletionListener:self
selector:@selector(musicDidFinish)];
CDAudioManager class reference
註冊的委託每當背景音樂結束此委託將被調用。這當然只適用於以背景音樂播放聲音文件的情況(使用playBackgroundMusic方法)。
如果這不適用於您,請查看ObjectAL。你會有更多的選擇和更大的靈活性。例如,使用ALSource,您可以排隊代表聲音文件的多個ALBuffer對象。這意味着只要源的緩衝區計數減少到1,您只需排隊下一個緩衝區即可實現多個聲音文件(任何格式)的不間斷,連續播放。
因爲ObjectAL太棒了(嗯,我認爲是這樣:))它包含在內,並準備在Kobold2D中使用。
您可以使用單個音頻隊列或RemoteIO音頻單元,只需以任意順序從任何文件中填充回調緩衝區中的原始/ PCM音頻樣本。
非常感謝您的回答!我嘗試在setBackgroundMusicCompletionListener的回調中播放另一個聲音,但它不夠快。我在播放音樂,所以最輕微的延遲將非常明顯。我預先載入了背景聲音,所以我猜這是行不通的。 –
我會嘗試你的其他技巧儘快:) –
非常感謝!它使用ALSource和ALBuffer使用ObjectAL。創建不同的緩衝區,然後排隊他們做了訣竅:) –