【发布时间】:2019-05-02 21:56:35
【问题描述】:
我对 Swift 和 SpriteKit 完全陌生,很抱歉我真的一无所知。我正在尝试在单个场景中添加 2 个连续的 SKLabelNode。场景的背景是.black。我创建了一个从 UIBezierPath 生成 SKShapeNode 的函数,以覆盖屏幕的 3/4,例如 P 形状,.fill = .white。我添加孩子并结束函数。
我在 didMove 覆盖中添加了该函数。 (不要问我为什么,我正在关注一些例子,目前它似乎有效。我稍后会解决这个问题,但目前我专注于当前的问题)
然后我创建第二个函数来添加 2 个 SKLabelNode。白色部分上一层黑色,黑色部分上一层白色。然后我将两者都添加到场景中。
我在形状一之后添加了函数。
结果是白色部分上的黑色不显示。 如果我在黑色上注释白色,则前一个将毫无问题地显示。
我试图推断addChild 的顺序,但结果没有改变。
有人知道原因吗?
我尝试切换addChild。
import SpriteKit
class MenuScene: SKScene {
override func didMove(to view: SKView) {
layoutScene()
addLabels()
}
func layoutScene() {
backgroundColor = .black
let rectSize = frame.size.width / 4
//Codice per creare la scena della home
//inizio
let homeScreen = SKShapeNode()
homeScreen.fillColor = .white
let shapeHome = UIBezierPath()
let shapeOrigin = CGPoint(x: view!.bounds.minX, y: view!.bounds.minY)
shapeHome.move(to: shapeOrigin)
shapeHome.addLine(to: CGPoint(x: view!.bounds.minX, y: view!.bounds.maxY))
shapeHome.addLine(to: CGPoint(x: view!.bounds.maxX, y: view!.bounds.maxY))
shapeHome.addLine(to: CGPoint(x: view!.bounds.maxX, y: rectSize))
shapeHome.addLine(to: CGPoint(x: view!.bounds.maxX - rectSize, y: rectSize))
shapeHome.addLine(to: CGPoint(x: view!.bounds.maxX - rectSize, y: view!.bounds.minY))
shapeHome.addLine(to: CGPoint(x: view!.bounds.minX, y: view!.bounds.minY))
shapeHome.close()
homeScreen.path = shapeHome.cgPath
homeScreen.fillColor = .white
//fine
addChild(homeScreen)
}
func addLabels() {
let rectSize = frame.size.width / 4
let home = SKLabelNode(text: "HOME")
home.fontName = "AvenirNext-Bold"
home.fontSize = 50.0
home.fontColor = .black
home.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(home)
let b = SKLabelNode(text: "B")
b.fontName = "AvenirNext-Bold"
b.fontSize = 40.0
b.fontColor = .white
b.position = CGPoint(x: frame.maxX - (rectSize/2), y: rectSize/2)
addChild(b)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
}
}
【问题讨论】:
标签: swift sprite-kit sklabelnode