到目前为止,我发现有任何可能解决这个问题:
我试图将声音效果添加到特定节点。从父节点中删除节点时,声音应该停止。触摸节点时声音也应该停止。我用playSoundFileNamed(" name",waitForCompletion:false)尝试了它,但是你无法停止这个动作。
在后台播放AV音频播放器正在播放声音。
如果有人想要尝试一些新想法会很好。
答案 0 :(得分:1)
简而言之,您无法停止使用SKAction播放的声音。正如您已经提到的那样,您可以使用AVAudioPlayer来实现此目的(在使用sfx时我不确定这个表演的性能)。或者您可以使用性能良好的ObjectAL库。 SKAction的playSoundFileNamed方法可能用于播放短音,但除了播放声音之外,您没有其他控制权。你不能暂停或恢复它或类似的东西。移除操作键也无助于在完成播放之前停止声音(例如,您无法在中间停止声音)。
您还可以查看iOS 9.0及更高版本中提供的SKAudioNode。有一个set of SKAction methods可以与SKAudioNode一起使用。 就个人而言,我还没有尝试过这些,但也许值得一看。
希望这有帮助。
答案 1 :(得分:0)
您可以尝试子类化SKAudioNode
您可以根据自己的喜好自定义spriteNode
import SpriteKit class SoundSourceNode: SKNode { let spriteNode = SKSpriteNode(color: UIColor.greenColor(), size: CGSize(width: 20, height: 20)) let audioNode = SKAudioNode(fileNamed: "Boing-One Low.mp3") required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } init(size: CGSize) { spriteNode.position = CGPoint(x: 0, y: 0) audioNode.positional = true audioNode.position = CGPoint(x: 0, y: 0) super.init() self.addChild(spriteNode); self.addChild(audioNode); } }
请注意,{{1}}在iOS9及更高版本中可用