2015-02-26 4 views
0

Я развиваю игру в xcode 6 с быстрым. У меня есть scorelabel var scoreLabel: SKLabelNode!. Теперь в одном из моих методов я показываю свою этикетку:SKLabelNode с ног на голову возможно?

scoreLabel = SKlabelNode(fontNamed: "TrebuchetMS-Bold") 
scoreLabel.text = "\(score)" 
scoreLabel.fontSize = 30 
scoreLabel.fontColor = SKColor .redColor() 
scoreLabel.position = CGPoint(x:780, y:180) 
addChild(scoreLabel) 

Это показывает мой счет, как, например: 2500. Можно ли показать это с ног на голову?

К сожалению, я написал это в списке, потому что я не был в состоянии писать вверх ногами здесь.

Спасибо за ответы.

+0

Как вы понимаете, с ног на голову? Можете ли вы показать изображение. Текст, который вы написали как список, не перевернут. Кроме того, не можете ли вы просто повернуть SKNode? т. е. 'label.zRotation = M_PI' – Fogmeister

+0

Да, я не мог писать в stackoverflow вверх дном. Я не имею в виду список. 'M_PI' У меня' Double' не конвертируется в 'CGFloat' – Mehmet63

+0

' CGFloat (M_PI) 'тогда. Передайте его CGFloat – Fogmeister

ответ

0

Вы можете создать пользовательский класс для каждого character в string и создать отдельный SKLabelNode для каждого character.

class SKVerticalLabelNode : SKNode 
{ 
    var fontName : String = "" { 
     didSet { 
      self.updateLabelProperties() 
     } 
    } 

    var fontSize : CGFloat = 10.0 { 
     didSet { 
      self.updateLabelProperties() 
     } 
    } 

    var fontColor : UIColor = UIColor.whiteColor() { 
     didSet { 
      self.updateLabelProperties() 
     } 
    } 

    var text : String = "" { 
     didSet { 
      self.updateLabelProperties() 
     } 
    } 

    func updateLabelProperties() { 
     self.removeAllChildren() 
     let length = countElements(text) 
     var yPosition : CGFloat = 0 
     for character in reverse(text) { 
      let label = SKLabelNode(fontNamed: self.fontName) 
      label.fontColor = self.fontColor 
      label.fontSize = self.fontSize 
      label.text = String(character) 
      label.position = CGPointMake(0, yPosition) 
      yPosition += label.frame.size.height 
      addChild(label) 
     } 
    } 
} 

Он может быть использован как этот

let scoreLabel = SKVerticalLabelNode() 
scoreLabel.fontName = "TrebuchetMS-Bold" 
scoreLabel.text = "2500" 
scoreLabel.fontSize = 30 
scoreLabel.fontColor = UIColor.redColor() 
scoreLabel.position = CGPoint(x:180, y:180) 
addChild(scoreLabel) 
+1

вы можете просто использовать 'for char в строке {}' с помощью отдельного счетчика, чтобы удалить необходимость для всех операций подстроки и string.index. – Okapi

+1

@rakeshbs большое спасибо. он работает :-) – Mehmet63

1

Используйте SKLabelNodePlus ярлык для этого.
Вот ссылка: https://github.com/MKargin0/SKLabelNodePlus

Затем просто переверните этикетку, написав myLabel.xScale = -1. Это так просто!

+0

Похоже, что xScale теперь добавлен к стандартному SKLabelNode. – edmengel

Смежные вопросы