2016-12-02 84 views
3

的中心,我想一個SKLabelNode的位置設置爲SKSpriteNode的中心。 我看這個其他問題,但沒有與斯威夫特這些工作3設置SKLabelNode到SKSpriteNode斯威夫特

這是我的代碼:

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) 


    } 

這段代碼看起來像它的工作,但在斯威夫特3現在我得到這個錯誤:

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

我也曾嘗試:

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) 

但我仍然得到的結果是這樣的:iphone screen

任何想法?

+0

的[中央對SKSpriteNode一個SKLabelNode](可能的複製http://stackoverflow.com/questions/25818989/centre-a-sklabelnode -on-a-skspritenode) – shallowThought

+0

@NiallKehoe據我所知,SKSpriteNode從未擁有名爲'center'的屬性。這是一個特定於視圖的屬性,而不是節點。 – Whirlwind

回答

3

你對標籤位置的計算是錯誤的。您只需在0,0位置添加一個標籤,並且由於SpriteKit's coordinate system規則(0,0位於節點的中心),它將居中。

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) 

    } 

,你會得到這樣的:

enter image description here

+0

謝謝,我改了一下你的代碼,以適應我的應用程序,它現在正在工作!再次感謝 –