首页 文章

AVAudioPlayer 重置当前播放的声音并从头开始播放

提问于
浏览
15

我在使用 AVAudioPlayer 时遇到问题,我想重置一个播放器,如果它正在播放并重新播放。

我试着以下没有运气:

声音播放一次,但第二次我选择按钮停止声音,第三次再次启动声音。

//Stop the player and restart it
if (player.playing) {
    NSLog(@"Reset sound: %@", selectedSound);
    [player stop];
    [player play];
} else {
    NSLog(@"playSound: %@", selectedSound);
    [player play];      
}

我也试过使用 player.currentTime = 0 表示会重置播放器,但是没有用,我也尝试重置 currentTime = 0 然后调用不起作用的播放。

//Stop the player and restart it
if (player.playing) {
    NSLog(@"Reset sound: %@", selectedSound);
    player.currentTime = 0;
    [player play];
} else {
    NSLog(@"playSound: %@", selectedSound);
    [player play];      
}

3 回答

  • 36

    根据您的情况,我会尝试以下方法

    //Pause the player and restart it
    if (player.playing) {
        NSLog(@"Reset sound: %@", selectedSound);
        [player pause];
    }
    
    player.currentTime = 0;
    [player play];
    

    如果你要立即再次播放声音,我会建议暂停而不是停止。呼叫停止“停止播放并取消播放所需的设置。”

  • 1

    Swift 示例:

    player.currentTime = 0.0;
    
  • 1

    如上所示,如果您希望再次播放声音,则应避免停止禁用 AVAudioPlayer 实例,而只是重置其正在播放的位置。所以,不要使用 stop()或 pause(),但作为 Plumenator 提到,只需发出.currentTime=0。所以在你的情况下,你只需:

    if (player.isPlaying) { 
       player.currentTime = 0
    } else {
       player.play()
    }
    

相关问题