Ios 新课上不会播放声音
我是一名经验丰富的程序员,但对iOS和Swift还不熟悉。我已经建立了一个教程俄罗斯方块游戏的声音。我正在尝试重构代码,并将声音例程移动到指定的类中。正在调用新类中的函数,但声音不再播放 原代码(工程): 斯威夫特Ios 新课上不会播放声音,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我是一名经验丰富的程序员,但对iOS和Swift还不熟悉。我已经建立了一个教程俄罗斯方块游戏的声音。我正在尝试重构代码,并将声音例程移动到指定的类中。正在调用新类中的函数,但声音不再播放 原代码(工程): 斯威夫特 import SpriteKit ... class GameScene: SKScene { ... runAction(SKAction.repeatActionForever(SKAction.playSoundFileNamed("theme.mp3", waitFo
import SpriteKit
...
class GameScene: SKScene {
...
runAction(SKAction.repeatActionForever(SKAction.playSoundFileNamed("theme.mp3", waitForCompletion: true)))
}
新代码(无声音播放):
听起来,斯威夫特
import SpriteKit
class Sounds: SKNode {
required init(coder aDecoder: NSCoder) { fatalError("NSCoder not supported") }
override init() { super.init() }
func playSoundtrack() {
println( "Sounds: playSoundtrack: ")
runAction(SKAction.repeatActionForever(SKAction.playSoundFileNamed("theme.mp3", waitForCompletion: true)))
}
}
将上述游戏场景代码更改如下:
class GameScene: SKScene {
var soundEngine: Sounds = Sounds()
...
soundEngine.playSoundtrack()
}
我验证了println已经执行,但没有声音播放。有什么想法吗?来自苹果的文档 SKAction对象是由 场景 您需要将
soundEngine
添加到具有
self.addChild(soundEngine)
soundEngine.playSoundtrack()
或者将场景传递到playSoundtrack
方法中,并在场景上运行操作
soundEngine.playSoundtrack(self)
func playSoundtrack(SKScene *scene) {
scene.runAction(SKAction.repeatActionForever(SKAction.playSoundFileNamed("theme.mp3", waitForCompletion: true)))
}
当然,如果选择后者,则最好从
SKScene
子类运行操作。您正在调用的runAction
对象/节点是什么?控制台中是否有错误?这就是问题所在,没有在节点上运行它。控制台中没有错误。将该类添加到场景中,效果良好。谢谢就是它——addChild(声音引擎)。非常感谢!