首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时播放NSSound更多次

同时播放NSSound更多次
EN

Stack Overflow用户
提问于 2016-03-14 06:28:56
回答 1查看 287关注 0票数 3

我需要在函数中插入一个代码,当它被调用时播放一个声音。

问题是,函数的调用速度比声音持续时间快,所以声音的播放次数比函数调用的次数要少。

代码语言:javascript
复制
function keyDownSound(){
   NSSound(named: "tennis")?.play()
}

问题是NSSound只有在尚未播放的情况下才会开始播放。有什么需要修正的想法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-14 06:42:36

问题来源是init?(named name: String)为相同名称返回相同的NSSound实例。您可以复制NSSound实例,同时播放多个声音:

代码语言:javascript
复制
function keyDownSound(){
    NSSound(named: "tennis")?.copy().play()
}

另一种方式-播放结束后再次启动声音。为此,您需要实现sound(sound: NSSound, didFinishPlaying aBool: Bool)委托方法。例如:

代码语言:javascript
复制
var sound: NSSound?
var playCount: UInt = 0

func playSoundIfNeeded() {
    if playCount > 0 {
        if sound == nil {
            sound = NSSound(named: "Blow")!
            sound?.delegate = self
        }

        if sound?.playing == false {
            playCount -= 1
            sound?.play()
        }
    }
}

func keyDownSound() {
    playCount += 1
    playSoundIfNeeded()
}

func sound(sound: NSSound, didFinishPlaying aBool: Bool) {
    playSoundIfNeeded()
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35976676

复制
相关文章

相似问题

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