Nia*_*hoe 5 xcode objective-c sprite-kit skspritenode swift
我正在尝试将 SKLabelNode 的位置设置为 SKSpriteNode 的中心。我已经看过其他问题,但这些问题都不适用于 Swift 3。
这是我的代码:
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)
}
Run Code Online (Sandbox Code Playgroud)
这段代码看起来可以工作,但在 Swift 3 中,我现在收到此错误:
'SKSpriteNode' 类型的值没有成员 'center'
我也试过:
self.letter1text.position = CGPoint(x: letter1background.frame.width/2 - (letter1text.frame.width/2), y: letter1background.frame.height/2 -(letter1text.frame.height/2))
Run Code Online (Sandbox Code Playgroud)
&
letter1text.position = CGPoint(x:letter1background.frame.midX, y:letter1background.frame.midY)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
您对标签位置的计算是错误的。您只需在 0,0 位置添加一个标签,由于SpriteKit 的坐标系规则(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)
}
Run Code Online (Sandbox Code Playgroud)
你会得到这个:
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |