Я использую Expo Audio , чтобы воспроизвести несколько коротких звуков из списка.
async playAudio(file) {
try {
await Audio.setIsEnabledAsync(true);
const sound = new Audio.Sound();
await sound.loadAsync(file);
await sound.playAsync();
} catch(error) {
console.error(error);
}
}
Который я звоню из списка с list.map()
renderTheList = (item, i) => {
return (
<View key={i}>
<TouchableOpacity onPress={ () => { this.onAudioSelected(item.audio) }}>
</TouchableOpacity>
</View>
)
}
onAudioSelected(audio) {
// Audio.clearSounds() <-- something like this
playAudio(audio)
...
}
Звук воспроизводится нормально, но когда я выбираю следующий элемент в списке, предыдущий звук не останавливается. Поэтому, если я коснусь группы подряд, раздастся куча звуков.
Как остановить все воспроизводимые в данный момент звуки?