Итак, у меня есть SKLabelNode, который отображает высокий балл пользователей, когда максимальный балл пользователей равен, например, 5, позиция меток не находится в том же положении, где она была бы, если бы оценка была, например, 35 или 100 заставляет метку идти за пределами экрана, пожалуйста, может кто-нибудь помочь с этой проблемой, есть ли способ заставить метку оставаться на том же месте, если изменится высокий балл? нужно ли накладывать ограничения на метку? Кстати, это в наборе спрайтов и использовании swift
Почему мой SKLabelNode уходит со страницы, если оценка увеличивается
Ответы (2)
Вы хотите использовать SKLabelNodeHorizontalAlignmentMode.Left вот так:
class GameScene: SKScene {
var label = SKLabelNode(fontNamed: "ArialMT")
var score: Int = 0 {
didSet {
label.text = "Score: \(score)"
}
}
override func didMoveToView(view: SKView) {
label.fontSize = 24
label.text = "Score: \(score)"
//Place the label in upper left corner of the screen
label.position = CGPoint(x: 50, y: CGRectGetMaxY(frame)-50)
//Add this
label.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Left
addChild(label)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
score+=5
}
}
Результат:
person
Whirlwind
schedule
25.01.2016
спасибо за ответ, однако использование вашей позиции приводит к тому, что метка полностью исчезает с представления, а добавление horizontalAlignmentMode.Left оставляет только конец метки в представлении. Я пытался использовать .Right, но это также отключает метку от представления. Чтобы было ясно, это мой код метки Highscore -
- person Andrew Harris; 26.01.2016
позиция раньше была - .position = CGPoint(x: self.frame.width / 2 + 60, y: self.frame.height / 2 + 335)
- person Andrew Harris; 26.01.2016
Конечно, вы должны соответствующим образом изменить положение своей этикетки. Просто сдвиньте метку немного вправо.
- person Whirlwind; 26.01.2016
так что ваша позиция устанавливает позицию в левом верхнем углу, почему тогда метка не отображается?
- person Andrew Harris; 26.01.2016
@AndrewHarris Нет проблем, рад слышать, что это работает! Если этот ответ помог вам решить проблему, отметьте его как принятый.
- person Whirlwind; 26.01.2016
Привет @Whirlwind, как я могу получить CGRectGetMaxY?
- person Sky; 30.06.2020
Я бы попробовал изменить привязку узла с (0,5, 0,5), которая используется по умолчанию, на (0, 0). Это означает, что узел теперь будет «привязан» к верхнему левому углу, а не к середине.
РЕДАКТИРОВАТЬ: (0, 0) в SpriteKit ВНИЗУ СЛЕВА. Используйте (0, 1) вместо TOP LEFT!
person
kevchoi
schedule
25.01.2016
Спасибо за быстрый ответ! Я новичок в SKLabelNodes, как мне добавить этот anchorPoint в метку?
- person Andrew Harris; 25.01.2016
единственная проблема в том, что SKLabelNode не имеет члена anchorPoint
- person Andrew Harris; 25.01.2016
Упс - прости за это! Вы правы, и другой ответ правильный :)
- person kevchoi; 26.01.2016