Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 新课上不会播放声音_Ios_Swift_Sprite Kit - Fatal编程技术网

Ios 新课上不会播放声音

Ios 新课上不会播放声音,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我是一名经验丰富的程序员,但对iOS和Swift还不熟悉。我已经建立了一个教程俄罗斯方块游戏的声音。我正在尝试重构代码,并将声音例程移动到指定的类中。正在调用新类中的函数,但声音不再播放 原代码(工程): 斯威夫特 import SpriteKit ... class GameScene: SKScene { ... runAction(SKAction.repeatActionForever(SKAction.playSoundFileNamed("theme.mp3", waitFo

我是一名经验丰富的程序员,但对iOS和Swift还不熟悉。我已经建立了一个教程俄罗斯方块游戏的声音。我正在尝试重构代码,并将声音例程移动到指定的类中。正在调用新类中的函数,但声音不再播放

原代码(工程): 斯威夫特

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(声音引擎)。非常感谢!