我正在尝试暂停或停止一个永远重复的 SKAction,这应该在用户按下暂停按钮时发生。我找到了一种停止音乐的方法,但由于这个错误,我无法调用它所在的函数。它准确地说:Missing argument for parameter 'coder' in call
。
Class GameViewController: UIViewController, SwiftrisDelegate, UIGestureRecognizerDelegate {
@IBAction func didPause(sender: UIButton) {
if self.scene.paused == false{
self.scene.stopTicking()
self.scene.paused = true
GameScene().stopGameMusic() //error on this line
}
}
}
class GameScene: SKScene {
runAction(SKAction.playSoundFileNamed("theme.mp3", waitForCompletion: true), withKey:("themeSong"))
func stopGameMusic() {
removeActionForKey("themeSong")
}
}
最佳答案
GameScene
没有不带参数的初始化器 - 您既没有定义也没有从 SKScene
继承。如果您打算在每次按下“暂停”时创建一个 GameScene
,这本身就是一个有问题的方法,那么您将需要调用现有的初始化程序或创建一个不带任何参数的初始化程序.
看起来 SKScene
的指定初始化程序是 init(size: CGSize)
。因此,与其简单地调用 GameScene()
,不如调用 GameScene(size: ...)
,或者在类 GameScene
中定义
class GameScene : SKScene {
// ...
init () {
super.init (size: ...)
}
}
关于ios - Swift - 调用中参数 "coder"缺少参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27877842/