Nextrp [CPP] RU + Many GEOs Игра на карте России | NEXTRP

AVAudioPlayer сбрасывает воспроизводимый в данный момент звук и воспроизводит его с начала

iphone audio core-audio avaudioplayer

8856 просмотра

3 ответа

8321 Репутация автора

У меня возникла проблема с использованием 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 и затем вызвать play, который не работал.

//Stop the player and restart it
if (player.playing) {
    NSLog(@"Reset sound: %@", selectedSound);
    player.currentTime = 0;
    [player play];
} else {
    NSLog(@"playSound: %@", selectedSound);
    [player play];      
}
Автор: Dougnukem Источник Размещён: 21.07.2009 07:12

Ответы (3)


36 плюса

6785 Репутация автора

Решение

Для вашей ситуации я бы попробовал следующее

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

player.currentTime = 0;
[player play];

Если вы собираетесь немедленно воспроизвести звук, я бы предложил сделать паузу вместо остановки. Calling stop "Останавливает воспроизведение и отменяет настройку, необходимую для воспроизведения."

Автор: Jonathan Arbogast Размещён: 21.07.2009 11:39

1 плюс

6050 Репутация автора

Быстрый пример:

player.currentTime = 0.0;
Автор: Micro Размещён: 28.07.2016 01:43

0 плюса

6 Репутация автора

Как указано, если вы хотите, чтобы звук воспроизводился снова, вам следует избегать отключения экземпляра AVAudioPlayer с остановкой, а просто выполнить сброс позиции, в которой он воспроизводится. Поэтому не используйте stop () или pause (), но, как уже упоминалось в Plumenator, просто введите .currentTime = 0.

Автор: Justin Ngan Размещён: 20.06.2019 01:46
Вопросы из категории :
32x32