SKLabelNode不显示[SpriteKit]

时间:2016-07-27 00:36:41

标签: swift xcode sprite-kit

我创建了一个名为smallScreen的SKShapeNode和一个名为screenLabel的SKLabelNode。

我后来尝试在smallScreen中显示screenLabel。然而,当我运行代码时,它不起作用。我尝试将screenLabel作为一个孩子添加到自己,这似乎允许显示文本。每当我将screenLabel作为子节点添加到smallScreen时,它就不会显示。请多多帮助,谢谢。

    self.smallScreen = (self.childNodeWithName("screen") as? SKShapeNode)!
    self.smallScreen.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height * 2/3)

    screenLabel.text = "Screen"
    screenLabel.fontSize = 30
    screenLabel.fontColor = UIColor.redColor()
    screenLabel.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height * 2/3)
    screenLabel.hidden = false
    self.smallScreen.addChild(screenLabel)

1 个答案:

答案 0 :(得分:0)

默认情况下,在Sprite-kit中,场景的原点位于视图的左下角。其默认值为CGPointZero,您无法更改它。 (source)。

精灵的(SKSpriteNode)定位点默认为(0.5,0.5),对应于帧的中心(source)。

SKShapeNode没有anchorPoint

LearnCocos2D在这个问题上回答:

  

使用图像时,可能需要将其对齐到节点的位置。   没有其他办法可以做到这一点,但通过anchorPoint,因为   图像本身无法修改(反正不容易)。

     

创建形状时,您可以完全控制对齐   通过CGPath的形状。您可以简单地将路径转换为更改   形状相对于节点位置的对齐。

     

这是我的解释,而不是事实。

那么,您的代码发生了什么

我不知道你是如何初始化你的形状的,我只是举个例子:

/* Create a Shape Node representing a rect centered at the Node's origin. */
    @available(iOS 8.0, *)
    public convenience init(rectOfSize size: CGSize)

所以我们创建这样的形状:

self.smallScreen = SKShapeNode.init(rectOfSize: CGSizeMake(200,200))

首次,您将SKShapeNode放置在X坐标的屏幕X中心,Y = self.frame.size.height * 2/3。实际上,您的smallScreen可见。

说到您的标签,您已将其添加到smallScreen,因此screenLabel必须尊重其父母的对齐方式。 事实上,只需进行此更改即可看到您的标签:

自:

   screenLabel.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height * 2/3)

要:

screenLabel.position = CGPointZero

并根据其父母的对齐方式将您的标签定位到smallScreen的中心。