【问题标题】:Centre a SKLabelNode on a SKSpriteNode在 SKSpriteNode 上将 SKLabelNode 居中
【发布时间】:2014-11-07 06:20:52
【问题描述】:

我有一个 SKLabelNode,它是 SKSpriteNode 的子节点,因为我正在尝试创建一个 Button 类来以更简单的方式创建按钮。我使用 SKSpriteNode 的锚点尝试了几件事,但我不太明白到底发生了什么。如何将标签居中到精灵(它是父节点)上?

【问题讨论】:

  • 如果您展示您已经尝试过的内容,它将帮助我们为您提供帮助。
  • 感谢您的快速回复。我实际上只是想出了如何去做。我设置了标签的对齐模式(水平和垂直),现在无论标签文本的大小如何,它都完美居中!我会在下面发帖。
  • @02fentym 我们希望您能展示您的代码解决方案,而不是简单地阐述您解决了您提出的问题而不展示解决方案的事实。
  • 我做了...它在下面。我自己回答了这个问题。

标签: sprite-kit skspritenode sklabelnode


【解决方案1】:

Swift 4.2 XCode 10.1

将此函数复制到您的 SpriteKit 类中:

func createLabel(text: String) {

    // initialisation
    let label = SKLabelNode(fontNamed: "Wicked Mouse")

    // customisation
    label.text = text
    label.fontColor = .white
    label.fontSize = 30.0

    // positioning
    label.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
    label.verticalAlignmentMode = .center
    label.horizontalAlignmentMode = .center
    label.zPosition = 1
    
    self.addChild(label)

}

【讨论】:

  • 虽然这可能会回答作者的问题,但它缺少一些解释性文字和/或文档链接。如果没有围绕它们的一些短语,原始代码 sn-ps 并不是很有帮助。您可能还会发现how to write a good answer 非常有帮助。请编辑您的答案。
【解决方案2】:

这会将您的标签放在精灵套件中的场景中心:

yourLabel.horizontalAlignmentMode = .Center;
yourLabel.verticalAlignmentMode = .Center

【讨论】:

    【解决方案3】:

    我意识到如何解决这个问题......这就是我所做的。请记住,我有一个名为 Button 的类,它是 SKSpriteNode 的子类。

    在 Button.m 类中,我有一个名为 label 的实例变量,它是一个 SKLabelNode。我将标签节点作为子节点添加到按钮,然后将水平和垂直对齐模式设置为居中。

    label = [[SKLabelNode alloc] init];
    [self addChild:label];
    [label setHorizontalAlignmentMode:SKLabelHorizontalAlignmentModeCenter];
    [label setVerticalAlignmentMode:SKLabelVerticalAlignmentModeCenter];
    

    【讨论】:

    • 好的,但是你如何确保外部(精灵)按钮精灵对于文本足够大?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    相关资源
    最近更新 更多