我有這些計時器,一個用于更新計時器文本,另一個用于每十秒發出一次聲音,兩個計時器都會運行直到我停止它們,但是一旦它們達到 10 秒,我就需要它們以使聲音消失計時器重置回 0 秒,然后倒計時到 10 秒,依此類推
匯入 UIKit 匯入 AVFoundation 類 ViewController: UIViewController {
var running = false
@IBOutlet weak var timer: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
running = false
}
var timer3 = Timer()
var time5 = 00.00
var player: AVAudioPlayer!
var timer4 = Timer()
@IBAction func resetBtn(_ sender: UIButton) {
timer.text = "00.00"
timer3.invalidate()
}
@IBAction func stopBtn(_ sender: UIButton) {
timer3.invalidate()
timer4.invalidate()
running = false
}
@IBAction func startBtn(_ sender: UIButton) {
if running == true {
return
} else {
running = true
timer3 = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateLabel), userInfo: nil, repeats: true)
timer4 = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(playSound), userInfo: nil, repeats: true)
}
};
@objc func updateLabel() {
time5 = 1
timer.text = String(time5)
}
@objc func playSound() {
let url = Bundle.main.url(forResource: "mixkit-system-beep-buzzer-fail-2964", withExtension: "wav")
player = try! AVAudioPlayer(contentsOf: url!)
player.play()
}
}
uj5u.com熱心網友回復:
您需要重置變數time5
@objc func playSound() {
let url = Bundle.main.url(forResource: "mixkit-system-beep-buzzer-fail-2964", withExtension: "wav")
player = try! AVAudioPlayer(contentsOf: url!)
player.play()
time5 = 0.0 // reset here
}
您還可以將其設定為 1 計時器,每 1 秒滴答一次
@objc func updateLabel() {
time5 = 1
timer.text = String(time5)
if time5 >= 10.0 {
let url = Bundle.main.url(forResource: "mixkit-system-beep-buzzer-fail-2964", withExtension: "wav")
player = try! AVAudioPlayer(contentsOf: url!)
player.play()
time5 = 0.0 // reset here
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505319.html
