ios - 自定义 SKShapeNode 子项未出现

标签 ios swift sprite-kit skshapenode

我试图让一个数字出现在 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) 但没有任何反应。如果您发现问题,请告诉我。谢谢!

最佳答案

经过多次尝试和错误,重新自学如何 SKNodesUIViews 的工作方式不同,我认为你的问题的原因如下:.position sprite kit中的属性不是节点角点的位置,而是节点的中心。另外,当设置SKNode时作为另一个人的 child SKNode ,它的位置基于其父级,而不是场景。因此,不要设置 numLabelmidXmidY它应该是:

numLabel.position = CGPointMake(0, 0)

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

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

尽管如此,这并不完美。

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

关于ios - 自定义 SKShapeNode 子项未出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31095543/

相关文章:

ios - MPMoviePlayerController 在后台播放音频流

swift - 如何将变量从 ViewController 类传递到其他结构?

ios - 更改两个文本字段的颜色

swift - 如何使用 SpriteKit 获取文本框

ios - 执行操作后执行操作?

ios - Sprite 有时会消失 [Sprite Kit]

ios - 我无法将 P12 证书上传到 Azure(iOS 推送通知)

ios - 在 VoiceOver 打开时设置不同的行为,在带有按钮的堆栈 View 中

ios - 如何检测 UICollectionView 的滚动方向?

ios - 如何重新加载具有不同行数的 UITableView 部分?