2016-11-09 9 views
1

Ich habe eine Unterklasse von SKLabelNode, die drei oder vier Mal instanziert sind, die jeweils mit einem Namen, und ein Ziel:SCLabelNode Subclassed, um Szene zu präsentieren, wie?

// 

import SpriteKit 

class MenuButton: SKLabelNode { 

    var goesTo = SKScene() 

    override init() { 
     super.init() 
     print("test... did this get called? WTF? HOW/WHY/WHERE?") 
    } 

    convenience init(text: String, color: SKColor, destination: SKScene){ 
     self.init() 
     self.text = text 
     self.color = color 

     goesTo = destination 
    } 

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
     let nextScene = goesTo 
     // .....????????????????? 
     // HOW DO I GET THIS TO FIND ITS SCENE... 
     // THEN ITS VIEW, THEN PRESENT this nextScene???? 

    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

} 

ich ratlos bin, wie in der Ansicht, die wir zu nennen brauchen, um zu die Szene ändert sich.

Antwort

2

Jeder SKNode hat eine scene Eigenschaft, die die Szene zurückgibt, in der der Knoten lebt.

Und jedes SKScene als view Eigenschaft, so

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    let nextScene = goesTo 

    self.scene?.view?.presentScene(nextScene) 

} 
+0

DANKE !!! Viel besser als mein Ansatz zu diesem Problem;) 'myPointlessView = SKView() myPointlessView.presentScene (nextScene) ' – Confused

Verwandte Themen