如何为iPhone应用程序循环声音?

时间:2011-07-11 16:10:03

标签: iphone objective-c ios ipad

我试图循环我的声音文件,我找不到循环声音文件的参数!我准备拔掉头上的最后一根头发。它加载得很好....它播放....我只是无法弄清楚如何让它循环的代码。

这是我的代码:

NSString *eyeBGPath = [[NSBundle mainBundle] pathForResource:@"theeye" ofType:@"caf"];
CFURLRef eyeBGURL = (CFURLRef ) [NSURL fileURLWithPath:eyeBGPath];
AudioServicesCreateSystemSoundID(eyeBGURL, &eyeBackGroundID);
AudioServicesPlaySystemSound(eyeBackGroundID); 

我在这里做错了什么?

我发现了这个:

环 指示接收器在到达其内容结尾时是否重新开始播放。默认值:NO。

- (BOOL)loops
Return Value

当接收器完成后重新开始播放时为“是”,否则为“否”。

状况 适用于Mac OS X v10.5及更高版本。 也可以看看 - setLoops: 宣告进入 NSSound.h

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSSound_Class/Reference/Reference.html%23//apple_ref/occ/instm/NSSound/loops

我对如何实现这个感到困惑。

2 个答案:

答案 0 :(得分:2)

这是适合我的代码。如果有人需要帮助,请告诉我。 Apple Dev论坛上的某个人向我指出了AVFoundation文档。

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/theeye3.caf", [[NSBundle mainBundle] resourcePath]]];

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:NULL];
audioPlayer.numberOfLoops = -1;

[audioPlayer play];

以下是根据图像阵列中的随机数挑选声音文件的代码。

NSString *audioWiz = [[NSString alloc]initWithFormat:@"%d.caf", randNum];

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:[@"%@/" stringByAppendingString:audioWiz], [[NSBundle mainBundle] resourcePath]]];

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:NULL];
audioPlayer.numberOfLoops = 0;
audioPlayer.volume = 0.1;

[audioPlayer play];

答案 1 :(得分:0)

我认为你要找的答案是here

简短回答,使用MPMusicPlayerController