【问题标题】:Custom SKShapeNode Child Not Appearing自定义 SKShapeNode 子项未出现
【发布时间】:2015-06-28 02:24:26
【问题描述】:

我试图让一个数字出现在 SKShapeNode 的中间。但是,由于某种原因,当我将 SKLabelNode 添加为形状节点的子节点时,尽管 SKShapeNode 确实出现了,但它并没有出现。我添加了与 SKScene 的孩子相同的标签,它看起来很好。这是自定义类的代码:

class Dot: SKShapeNode {
    var numLabel = SKLabelNode(fontNamed: "MarkerFelt-Wide")
    func setNumber(i: Int) {
        numLabel.text = String(i)
        numLabel.fontColor = UIColor.whiteColor()
        numLabel.fontSize = 200
        numLabel.setScale(numLabel.frame.width / self.frame.width / 2)
        numLabel.position = CGPointMake(self.frame.midX ,self.frame.midY)
        self.addChild(numLabel)
    }
}

我打电话给dot.setNumber(1),但没有任何反应。如果您发现问题,请告诉我。谢谢!

【问题讨论】:

    标签: ios swift sprite-kit skshapenode


    【解决方案1】:

    经过反复试验,重新学习SKNodesUIViews的工作方式不同,我认为您的问题的原因如下:sprite kit中的.position属性不是角落的位置节点,但它的中心。此外,当将 SKNode 设置为另一个 SKNode 的子级时,其位置基于其父级,而不是场景。因此,与其将numLabel 设置为midXmidY,不如将​​其设置为:

    numLabel.position = CGPointMake(0, 0)
    

    但是,出于某种原因,y 的值仍然不正确,至少在我使用的代码中是这样。这可能是由于您缩放numLabel 的方式。所以我用代码修复了它:

    numLabel.position = CGPointMake(0, -(numLabel.frame.height / 2))
    

    不过,这并不完美。

    有了这些新信息,如果您仍然无法弄清楚,我会进一步研究获得确切位置。但请记住我在本文开头的回答。

    【讨论】:

    • 不知道为什么定位是这样的。对我来说,它看起来有点偏离中心,但出于测试目的,它现在还可以。感谢您对此进行测试!我一定会再弄乱这个位置,看看我是否能准确地弄清楚如何将它居中(如果还没有的话)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 2013-11-19
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多