首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何每10秒发出一次声音

如何每10秒发出一次声音
EN

Stack Overflow用户
提问于 2022-08-30 23:09:41
回答 2查看 63关注 0票数 0

这是我正在使用的代码,这是一个计时器,我需要声音每十秒钟播放一次,怎么做呢?

代码语言:javascript
复制
@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
       




    
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-31 03:09:59

您的代码似乎是错误的,因为您每秒钟增加一次time5并更新时间标签。但只有当time5 == 10.0你玩的时候。所以你只玩了一次在10.0

有两种方法可以让你这样做

第一,有一个计时器,每10.0播放声音和一个每1.0更新时间。

代码语言:javascript
复制
@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()
}

第二个,如果你只想让一个计时器简单的话

代码语言:javascript
复制
@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
     }
}
票数 1
EN

Stack Overflow用户

发布于 2022-08-31 04:56:06

参考样本

代码语言:javascript
复制
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()
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73549323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档