停止AVAudioPlayer

时间:2011-04-01 14:29:00

标签: iphone ios audio avaudioplayer

这是我的代码

 NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"95" ofType:@"wav"];

NSError *activationError = nil;
NSError *audioPlayerInitError = nil;
[[AVAudioSession sharedInstance] setActive: YES error:&activationError];

NSURL *newURL = [NSURL fileURLWithPath:soundFilePath];
musicPlayer1 = [[AVAudioPlayer alloc] initWithContentsOfURL:newURL error:&audioPlayerInitError];

if (musicPlayer1) {
    [musicPlayer1 stop];
    [musicPlayer1 release];
    musicPlayer1 = nil;
}
else {

    [musicPlayer1 prepareToPlay];
    [musicPlayer1 setVolume:.8];
    [musicPlayer1 setNumberOfLoops:-1]; // -1 means play indefintely
    [musicPlayer1 setDelegate: self];
    [musicPlayer1 play];
}

}

我正忙着用相同的按钮开始和停止AVAudioPlay(musicPlayer1在标题中)。现在,当我触摸按钮时,它不会播放任何内容。请帮忙吗?

1 个答案:

答案 0 :(得分:3)

您每次都在创建AVAudioPlayer的新实例。你需要在某个地方保留对象的引用,然后再参考它。在视图控制器类中添加一个字段:

@private AVAudioPlayer *currentAudio;

然后在此方法中,进行以下更改:

if (currentAudio) {
    [currentAudio stop];
    [currentAudio release];
    currentAudio = nil;
} else {
    // what you already have goes here
}