Воспроизведение звукового эффекта в Xcode - PullRequest
0 голосов
/ 05 августа 2020

Я создал кнопку в Xcode, которая воспроизводит короткий звуковой эффект. Я не могу повторно запустить кнопку / звук во время воспроизведения. Поэтому мне нужно подождать, пока звук не исчезнет, ​​чтобы повторить эффект. Мое намерение состоит в том, чтобы каждый раз, когда я нажимаю кнопку, звуковой эффект начинает воспроизводиться, даже если он все еще исчезает. Кто-нибудь знает, как этого добиться? Я использую XCode 11.6. Мой код ниже. Заранее большое спасибо.

import UIKit import AVFoundation

class ViewController: UIViewController {

var audioPlayer = AVAudioPlayer()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    
    do {
        audioPlayer = try AVAudioPlayer(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: "1", ofType: "mp3")!))
        audioPlayer.prepareToPlay()
    } catch {
        print(error)
    }
}

@IBAction func Play(_ sender: Any) {
    audioPlayer.play()
}

}

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Вы можете просто инициализировать метод audioPlayer в Play вместо viewDidLoad.

override func viewDidLoad() {
    super.viewDidLoad()
}

@IBAction func Play(_ sender: Any) {
    do {
        audioPlayer = try AVAudioPlayer(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: "1", ofType: "mp3")!))
        audioPlayer.prepareToPlay()
        audioPlayer.play()
    } catch {
        print(error)
    }
}
0 голосов
/ 05 августа 2020

если я правильно понимаю, вы хотите предотвратить повторное воспроизведение при воспроизведении звука и просто воспроизвести звук, когда он уже закончился, чтобы вы могли установить условие в зависимости от того, воспроизводится звук или нет (попробуйте это в действии кнопки):

 if audioPlayer.isPlaying(){
   // your statement when sound is playing in other word nothing to do
 }else{
   // your statement when sound is not playing and you want to start play
      audioPlayer.play()
 }

https://developer.apple.com/documentation/avfoundation/avaudioplayer/1390139-isplaying

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...