Ios 迅捷之声不';我不能在斯威夫特工作
我在我的应用程序(射击游戏)上实现了声音效果。 但是,如果在触摸目标时设置声音,则有时不会播放该声音。Ios 迅捷之声不';我不能在斯威夫特工作,ios,swift,Ios,Swift,我在我的应用程序(射击游戏)上实现了声音效果。 但是,如果在触摸目标时设置声音,则有时不会播放该声音。 我不知道为什么有时会播放,但有时不会 代码: class ViewController: ViewController { var soundManager: SoundManager = SoundManager() //..... func touchedTarget(){ soundManager.playSE() } } clas
我不知道为什么有时会播放,但有时不会 代码:
class ViewController: ViewController {
var soundManager: SoundManager = SoundManager()
//.....
func touchedTarget(){
soundManager.playSE()
}
}
class SoundManger {
let tapSE: Sound = Sound(url:Bundle.main.url(forResource: "tap", withExtension: "mp3")!)!
init(){
}
func playSE {
tapSE.play(numberOfLoops: 0, completion: nil)
}
}
编辑
class ViewController: ViewController {
var soundManager: SoundManager = SoundManager()
//.....
func touchedTarget(){
soundManager.playSE()
}
}
class SoundManger {
let tapSE: Sound = Sound(url:Bundle.main.url(forResource: "tap", withExtension: "mp3")!)!
init(){
}
func playSE {
tapSE.play(numberOfLoops: 0, completion: nil)
}
}
1.在“playSE”中添加了“DispatchQueue.main.async{}”,但没有起作用
func playSE {
DispatchQueue.main.async {
tapSE.play(numberOfLoops: 0, completion: nil)
}
}
func touchedTarget(){
DispatchQueue.main.async {
soundManager.playSE()
}
}
2.在“touchedTarget()”中添加了“DispatchQueue.main.async{}”,但不起作用
func playSE {
DispatchQueue.main.async {
tapSE.play(numberOfLoops: 0, completion: nil)
}
}
func touchedTarget(){
DispatchQueue.main.async {
soundManager.playSE()
}
}
问题可能是您可能在后台线程上调用它,而它应该在主线程上 在视图控制器中或任何调用声音的位置,请尝试使用:
DispatchQueue.main.async {
SoundManager().playSE()
}
它不起作用…声音是按触摸5个目标播放的。你还应该向我们展示你如何播放声音的代码。没有人能够以其他方式剖析问题。没关系,你提供的细节越多,其他人能够提供的帮助就越多。我本应该指定,但我的意思是,你如何尝试从视图控制器而不是从声音管理器播放声音。再次抱歉。我添加了我尝试的代码以及如何从ViewController调用“playSE”。