1

编辑:现在尝试实施亚当 B 的答案......

我有一个 crashSound.wav 文件,已放入我的 xCode 项目的 Supporting Files 文件夹中

我现在正试图让它在一个 while 循环中播放,但文档并不清楚我如何能做到这一点。我知道我必须在某处创建一个委托对象(我猜是我的 Game 类)并获取有关 stopButtonPressed 是否为假以及文件是否已完成播放的通知,以便它可以在 stopButtonPressed 条件为假时循环并再次播放。我知道我不应该通过调用 [crashSound play] 方法来做到这一点,但我不知道该怎么做......有什么帮助吗?

@interface Game()
{
    // code...

    AVAudioPlayer *crashSound;

    // code...
}
@end

@implementation Game

- (id) init 
{ 
    // code...

    NSURL *crashSoundFile = [[NSURL alloc] initWithString:@"crashSound" ];

    crashSound = [[AVAudioPlayer alloc] initWithContentsOfURL:crashSoundFile error:NULL];

    // code...
}
-(void) play // this is my "main" method that will be called once the playButton is pressed
{
   while(!self.stopButonPressed)
   {
      [crashSound play];
   }
}
@end
4

1 回答 1

0

对于大多数多媒体库的工作方式(例如,包括 ),您的代码结构是错误的AVPlayer

您将开始播放声音,而不是使用 while 循环,并在每次完成时检查您的条件是否为真。您可能需要在声音完成时基于计时器或在该回调中触发“下一个”事物,而不是循环。

有关如何设置 AVPlayer 和通知功能的示例,请参阅此问题和好的答案playerItemDidReachEnd:使用 AVFoundation AVPlayer 循环播放视频?

于 2012-08-09T16:57:25.973 回答