2011-10-25 3 views
2

iPhone 및 iPad 용 게임을 cocos2d를 사용하여 개발 중이며 다른 게임이 완료되면 정확하게 소리를 낼 수 있어야합니다. 저는 사운드 트랙을 작은 조각으로 잘게 썬 채로 재생할 수 있습니다. 재생이 끝나고 재생이 시작될 때 재생 간격이 가장 작을 수는 없습니다.iPhone에서 완벽한 연속 사운드 재생

btw. 나는 사운드를 하나의 파일로 묶어서 재생할 수 없으며 파일의 순서가 런타임에 재 배열 될 것이기 때문에 재생할 수 있습니다.

어떻게하면됩니까?

답변

2

는 CocosDenshion하면 배경 음악이 끝날 때마다이 대표가 호출됩니다

[[CDAudioManager sharedManager] setBackgroundMusicCompletionListener:self 
             selector:@selector(musicDidFinish)]; 

CDAudioManager class reference

와 대리자를 등록 할 수 있습니다. 물론 이것은 사운드 파일을 배경 음악으로 재생할 때만 작동합니다 (playBackgroundMusic 메서드 사용).

그래도 작동하지 않는다면 ObjectAL을 확인하십시오. 더 많은 옵션과 더 큰 유연성을 누릴 수 있습니다. 예를 들어 ALSource을 사용하면 사운드 파일을 나타내는 ALBuffer 개체를 여러 개 대기열에 넣을 수 있습니다. 즉, 소스의 버퍼 수가 1로 줄어들 때마다 다음 버퍼를 큐에 넣기 만하면 여러 사운드 파일 (모든 형식)을 중단없이 연속 재생할 수 있습니다.

ObjectAL이 너무 굉장하기 때문에 (글쎄요, 저는 그렇게 생각합니다 :)) 포함되어있어 Kobold2D에서 사용할 준비가되었습니다.

+0

답장을 보내 주셔서 감사합니다. setBackgroundMusicCompletionListener의 콜백에서 다른 사운드를 재생하려했지만 충분히 빠르지 않았습니다. 나는 음악을 연주하기 때문에 약간의 지연이 매우 두드러 질 것입니다. 백그라운드 사운드를 미리로드 했으므로 작동하지 않을 것입니다. –

+0

나는 당신의 다른 팁을 빨리 시험해 보겠습니다 :) –

+0

고마워요! ALSource 및 ALBuffer와 함께 ObjectAL을 사용하여 작업했습니다. 다른 버퍼를 생성하고 큐에 넣는 것은 트릭을 만들었습니다. :) –

0

단일 오디오 대기열 또는 RemoteIO 오디오 장치를 사용할 수 있으며 모든 파일의 원시/PCM 오디오 샘플을 콜백 버퍼에 임의의 순서로 채울 수 있습니다.