У меня есть SKLabelNode, который является дочерним элементом SKSpriteNode, потому что я пытаюсь создать класс Button для более простого создания кнопок. Я пробовал пару вещей, используя точку привязки SKSpriteNode, но я не совсем понимаю, что происходит. Как центрировать метку на спрайте (это родительский узел)?
Центрировать SKLabelNode на SKSpriteNode
comment
Если вы покажете, что вы уже пробовали, это поможет нам помочь вам.
- person Mick MacCallum   schedule 13.09.2014
comment
Спасибо за быстрый ответ. Я на самом деле только что понял, как это сделать. Я установил режимы выравнивания (горизонтальный и вертикальный) метки, и теперь она идеально центрирована, независимо от размера текста метки! Я опубликую ниже.
- person 02fentym   schedule 13.09.2014
comment
@ 02fentym, мы бы хотели, чтобы вы показали свое решение кода, а не просто излагали тот факт, что вы решили вопрос, который задали, не показывая решения.
- person Shawn J. Molloy   schedule 19.05.2015
comment
Я сделал... это ниже. Я сам ответил на вопрос.
- person 02fentym   schedule 20.05.2015
Ответы (3)
Я понял, как это решить... вот что я сделал. Имейте в виду, что у меня есть класс Button, который является подклассом SKSpriteNode.
В классе Button.m у меня есть переменная экземпляра с именем label, которая является SKLabelNode. Я добавляю узел метки в качестве дочернего элемента кнопки, а затем устанавливаю режимы горизонтального и вертикального выравнивания по центру.
label = [[SKLabelNode alloc] init];
[self addChild:label];
[label setHorizontalAlignmentMode:SKLabelHorizontalAlignmentModeCenter];
[label setVerticalAlignmentMode:SKLabelVerticalAlignmentModeCenter];
person
02fentym
schedule
13.09.2014
Хорошо, но как убедиться, что спрайт внешней (спрайтовой) кнопки будет достаточно большим для текста?
- person trojanfoe; 22.04.2015
Это поместит вашу метку в центр сцены в наборе спрайтов:
yourLabel.horizontalAlignmentMode = .Center;
yourLabel.verticalAlignmentMode = .Center
person
guest
schedule
24.06.2015
Свифт 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)
}
person
Saranjith
schedule
31.12.2018
Хотя это может ответить на вопрос авторов, в нем отсутствуют поясняющие слова и/или ссылки на документацию. Необработанные фрагменты кода не очень полезны, если вокруг них нет фраз. Вы также можете найти очень полезным как написать хороший ответ. Пожалуйста, отредактируйте свой ответ.
- person Roy Scheffers; 31.12.2018