Swift 2:NSTimer上的声音总是播放两次

时间:2015-10-08 02:04:15

标签: ios swift nstimer

所以我每隔0.1秒运行一次NSTimer函数。

无论有多少条件和&警告我把它放到位,这个声音(以及定时器上的其他声音)播放两次。触摸触发的相同声音只播放一次。

myTimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("flip:"), userInfo: nil, repeats: true)

这是它触发的功能。

func flip(timer: NSTimer) {

    if current_timer == -3.0 && rang_3 == false {

            if rang_3 == false {

                rang_3 = true

                dialed_3()

                NSLog("DIALED 3")
            }

    }

}

这是我需要仅触发ONCE的声音功能。

func dialed_3() {

    if sound_mute == false {

        do {

            dial_3 =  try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("3", ofType: "mp3")!))
            dial_3.volume = 2
            dial_3.numberOfLoops = 0
            dial_3.prepareToPlay()
            dial_3.play()


        } catch {

            print("Error")

        }

    }


}

2 个答案:

答案 0 :(得分:0)

我不知道你的其他代码,但是你展示的是它,它会运行一次。 给你一个小建议:将初始化移动到全局,而不是每次运行计时器都运行它。

答案 1 :(得分:0)

好的!因此,我将!rang_3支票移至固定!sound_mute支票&有效。作为故障保护,我复制了倒计时期间使用的声音。 1场比赛后将他们静音。因此,如果他们玩了两次,用户就不会注意到。

if !sound_mute && !rang_3 {

    do {

        //soundstuff

    }

}