2016-12-02 3 views
3

Ich versuche eine SKLabelNode-Position in die Mitte eines SKSpriteNode zu setzen. Ich habe in anderen Fragen zu diesem Thema gesucht, aber keines dieser Arbeit mit Swift 3.Einstellung von SKLabelNode auf SKSpriteNode Swift

Dies ist mein Code:

var letter1background = SKSpriteNode(imageNamed: "letterbackground") 
    var letter1text = SKLabelNode() 

    override func didMove(to view: SKView) { 


     letter1background.position = CGPoint(x: self.size.width/8, y: self.size.height/7.5) 
     letter1background.size = CGSize(width: self.size.width/8, height: self.size.width/8) 
     letter1background.zPosition = -5 

     self.addChild(letter1background) 

     letter1text.text = "C" 
     letter1text.fontName = "Verdana-Bold " 
     letter1text.fontSize = 28 
     letter1text.fontColor = UIColor.white 
     letter1text.zPosition = 0 
     letter1text.horizontalAlignmentMode = letter1background.center 
     letter1text.verticalAlignmentMode = letter1background.center 

     self.letter1background.addChild(letter1text) 


    } 

Dieser Code sieht aus wie es aber in Swift 3 funktionieren würde ich jetzt das bekommen Fehler:

Value of type 'SKSpriteNode' has no member 'center'

ich habe auch versucht:

self.letter1text.position = CGPoint(x: letter1background.frame.width/2 - (letter1text.frame.width/2), y: letter1background.frame.height/2 -(letter1text.frame.height/2)) 

&

letter1text.position = CGPoint(x:letter1background.frame.midX, y:letter1background.frame.midY) 

Aber ich Ergebnisse noch wie diese: iphone screen

Irgendwelche Ideen?

+0

Mögliche Duplikat [Mitte ein SKLabelNode auf einem SKSpriteNode] (http://stackoverflow.com/questions/25818989/centre-a-sklabelnode -on-a-skspritenode) – shallowThought

+0

@NiallKehoe SKSpriteNode hatte niemals eine Eigenschaft namens 'center', wie ich weiß. Das ist eine Eigenschaft, die für die Ansichten spezifisch ist, nicht Knoten. – Whirlwind

Antwort

3

Ihre Berechnungen der Etikettenposition sind falsch. Sie müssen nur eine Markierung an der Position at 0,0 hinzufügen, und sie wird wegen SpriteKit's coordinate system Regeln zentriert sein (0,0 ist in der Mitte des Knotens).

override func didMove(to view: SKView) { 

     let label = SKLabelNode(fontNamed: "Arial") 

     label.text = "C" 
     label.fontColor = .black 
     label.verticalAlignmentMode = .center 
     label.fontSize = 29.0 
     label.zPosition = 1 


     let background = SKSpriteNode(color: .green, size: CGSize(width: 50, height: 50)) 

     background.addChild(label) 

     addChild(background) 

    } 

Und Sie werden diese:

enter image description here

+0

Danke, ich habe deinen Code ein bisschen geändert, damit er in meine App passt und jetzt funktioniert er! Danke noch einmal –

Verwandte Themen