SimpleAudioEngine 당신이 채널을 제어 할 수없는, 그래서 그냥 내부적으로 할당 한 채널 중 하나를 사용하여 음향 효과를 재생할 수 있습니다. 결국 모든 채널에서 오디오가 재생됩니다. 이 경우 새 오디오 파일을 재생해야하며 모든 채널이 이미 재생 중이면 SimpleAudioEngine은 기존 오디오 파일 중 하나를 취소합니다. 경우에 따라 이것이 배경 음악이 될 것입니다. Dang.
일반적으로이 문제를 해결하기 위해 수행하는 작업은 배경 음악 전용으로 하나의 오디오 채널을 할당 (할당)하는 것입니다. 다른 오디오는 그 채널에서 오디오를 재생하려고 시도하지 않습니다. "보통"CocosDenshion API을 사용해야합니다. CDAudioManager 또는 CDSoundEngine을 사용해야 할 것으로 보이지만 CocosDenshion에서 채널을 사용 해본 경험이 없습니다.
개인적으로 나는 CocosDenshion을 한번도 사용하지 않았습니다. 더 많은 컨트롤이 필요할 때마다 ObjectAL API를 쉽게 이해할 수 있으며 우수한 문서가 있습니다. 특정 채널에서 사운드를 재생하는 ObjectAL에 대해 다음 도우미 함수를 만들었습니다. 내 배경 음악에 대해 ALChannelSource을 인스턴스화하고 해당 채널을 통해서만 배경 음악을 재생했습니다. ALSoundSource을 돌려 주면 오디오가 재생되는 동안 피치, 팬 등을 변경할 수 있습니다.
+(id<ALSoundSource>) playEffect:(NSString*)effect channel:(ALChannelSource*)channel loop:(bool)loop
{
id<ALSoundSource> soundSource = nil;
if (channel)
{
ALBuffer* buffer = [[OALAudioSupport sharedInstance] bufferFromFile:effect];
soundSource = [channel play:buffer loop:loop];
}
return soundSource;
}
다른 오디오 파일들 OALSimpleAudio 클래스를 통해 재생됩니다.
아, 알겠습니다. SimpleAudioEngine은 너무 단순합니다. 포괄적 인 답변 주셔서 감사합니다, 나는 그것을 줄 것이며 다시보고 할 것입니다. –
OALAudioSupport는 어디서 제공됩니까? –
어디서 ObjectAL을 얻을 수 있습니까? 여기 : http://kstenerud.github.com/ObjectAL-for-iPhone/ – LearnCocos2D