我正在尝试创建一个方便初始化程序来覆盖convenience init? (fileNamed:)SKScene中的初始化程序,以便我可以将一些初始值传递给场景,同时还取消归档.sks文件.问题是,当我尝试这样做时,似乎SKScene(GameScene)的子类无法看到convenience init? (fileNamed:)超类的子类.以下是我的一些尝试:
Class GameScene : SKScene {
var stage : Int?
override init(size: CGSize) {
super.init(size: size)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
convenience init?(fileNamed: String, stage: Int) {
self.init(fileNamed: fileNamed) // Compiler error-- Argument labels '(filenamed:)' do not match any available overloads
self.stage = stage
}
Run Code Online (Sandbox Code Playgroud)
我发现的另一个尝试建议作为解决方法:
Class GameScene : SKScene {
var stage : Int?
override init(size: CGSize) {
super.init(size: size)
}
required init?(coder aDecoder: …Run Code Online (Sandbox Code Playgroud) 我对无法使用的Swift代码中的此循环感到困惑。这是整个函数-“ pulseChar”给我错误“索引超出范围”:
func openingSequence(){
let nodeList = [self.drum,self.piano,self.guitarBoard]
let offset = SKAction.waitForDuration(10)
let stOne = SKAction.runBlock { () -> Void in
for var i in 0...nodeList.count-1{
nodeList[i].runAction(SKAction.fadeAlphaTo(0.3, duration: 0.3))
i++
}
}
let firstLineWait = SKAction.waitForDuration(4)
let moveSprites = SKAction.runBlock { () -> Void in
moveScale(self.rheaBoard, duration: 0.5, to: CGPoint(x: 100, y: self.frame.height - 85), size: 0.4)
moveScale(self.guitarBoard, duration: 0.5, to: CGPoint(x: self.frame.midX - self.frame.midX/2, y: 65), size: 0.35)
for var i in 0...nodeList.count-1{
nodeList[i].runAction(fadeI)
i++
}
}
let fadeAudio …Run Code Online (Sandbox Code Playgroud)