这是我正在使用的代码,这是一个计时器,我需要声音每十秒钟播放一次,怎么做呢?
@IBAction func startBtn(_ sender: UIButton) {
timer3 = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.action8888), userInfo: nil, repeats: true)
}; @objc func action8888() {
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()
return
}发布于 2022-08-31 03:09:59
您的代码似乎是错误的,因为您每秒钟增加一次time5并更新时间标签。但只有当time5 == 10.0你玩的时候。所以你只玩了一次在10.0
有两种方法可以让你这样做
第一,有一个计时器,每10.0播放声音和一个每1.0更新时间。
@IBAction func startBtn(_ sender: UIButton) {
let timerForUpdateLabel = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateLabel), userInfo: nil, repeats: true)
let timerForPlaySound = 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()
}第二个,如果你只想让一个计时器简单的话
@IBAction func startBtn(_ sender: UIButton) {
timer3 = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(action8888), userInfo: nil, repeats: true)
};
@objc func action8888() {
time5 += 1
timer.text = String(time5)
if time5 % 10 == 0 // use mod here means everytime time5 divisible by 10 excute
{
let url = Bundle.main.url(forResource: "mixkit-system-beep-buzzer-fail-2964", withExtension: "wav")
player = try! AVAudioPlayer(contentsOf: url!)
player.play()
return
}
}发布于 2022-08-31 04:56:06
参考样本
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player: AVAudioPlayer!
var timer: Timer!
var time = 0
var repeatInterval = 10
override func viewDidLoad() {
start()
}
func start() {
// playSound()
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.playSound), userInfo: nil, repeats: true)
}
@objc func playSound() {
time += 1
print(time)
// update youre label here
// timer.text = String(time5)
if time % repeatInterval == 0 {
let url = Bundle.main.url(forResource: "mixkit-system-beep-buzzer-fail-2964", withExtension: "wav")
player = try! AVAudioPlayer(contentsOf: url!)
player.play()
}
}
}https://stackoverflow.com/questions/73549323
复制相似问题