Я хочу, чтобы пользователь нажимал кнопку, менял цвет фона (на желтый), воспроизводится WAV и по завершении WAV кнопка возвращается к исходному цвету (до красного). Так что у вас есть обработчик завершения звука. Попробовали различные комбинации кода ниже, но воспроизведение WAV и кнопка не отображаются для изменения цвета.Быстрое нажатие кнопки (выпуск обработчика завершения)
Это неправильный подход или я делаю что-то неправильно? Не хотите, чтобы мои обработчики завершения выполняли изменения цвета, поскольку я полагаю, что это слишком много.
Большое спасибо.
typealias CompletionHandler = (success:Bool) -> Void
@IBAction func fireButton(sender: AnyObject) {
playLaser({ (success)-> Void in
if success {
self.shots -= 1
self.labelShotsLeft.text = String(self.shots)
} else {
}
})
}
func playLaser(completionHandler: CompletionHandler) {
fireButton.layer.backgroundColor = UIColor.yellowColor().CGColor
let url = NSBundle.mainBundle().URLForResource("laser", withExtension: "wav")!
do {
player = try AVAudioPlayer(contentsOfURL: url)
guard let player = player else { return }
player.prepareToPlay()
player.play()
} catch let error as NSError {
print(error.description)
}
self.fireButton.layer.backgroundColor = UIColor.redColor().CGColor
completionHandler(success: true)
}