2016-05-26 1 views
0

Je suis un débutant pour la programmation OS X. Je construis un jeu simple pour Mac avec Sprite-Kit, et je suis bloqué avec le problème d'ajouter NSButton (et d'autres NSObjects) à la vue. Cela ne fonctionne tout simplement pas - aucun bouton n'apparaît. Mon code:Impossible d'ajouter NSButton à la scène Sprite-Kit

class LaunchScene: SKScene { 

override func didMoveToView(view: SKView) { 

    let background = SKSpriteNode(imageNamed: "Wall") 
    background.size = CGSize(width: 1600, height: 1200) 

    background.position = CGPoint(x: CGRectGetMidX(self.frame), 
            y: CGRectGetMidY(self.frame)) 

    self.addChild(background) 

    let button = NSButton(frame: NSRect(x: self.frame.width/2, 
       y: self.frame.height/2, width: 50, height: 25)) 
    self.view!.addSubview(button) //button doesn't show up 

Comment pourrais-je résoudre ce problème?

P.S. J'ai essayé d'ajouter une couche à ma vue, comme le recommandaient certains blogueurs, dans cette situation, le bouton apparaît réellement mais l'écran devient complètement noir ou ne rend que des défauts.

let layer = CALayer() 
self.view!.layer = layer 
self.view!.wantsLayer = true 
+0

http://stackoverflow.com/questions/19082202/setting-up-buttons-in-skscene –

+1

Comme le lien que Brendan Miller vous a donné, il est probablement préférable de créer des boutons directement avec les objets SKSpriteNode. Je ne sais pas comment fonctionne SKView sous le capot, mais il est probable que vous ne devriez pas essayer d'ajouter une sous-vue ou travailler avec des calques sur cette vue. –

+0

Le problème est - oui, je pourrais utiliser de simples SKShapeNodes rectangulaires ou d'autres éléments pour remplacer NSButtons mais j'ai besoin d'une sorte de curseur, et je ne sais pas comment je pourrais l'obtenir. Je construis un jeu pour OS X donc UISlider est fermé pour moi, et je ne peux pas comprendre comment ajouter NSSlider visible à la vue. – Derreck

Répondre

0

OK, finalement je compris comment le faire (! Ne pas besoin d'assigner une couche à votre point de vue si self.view .wantsLayer est égal à « true »):

class LaunchScene: SKScene { 

override func didMoveToView(view: SKView) { 

let background = SKSpriteNode(imageNamed: "Wall") 
background.size = CGSize(width: 1600, height: 1200) 

background.position = CGPoint(x: CGRectGetMidX(self.frame), 
           y: CGRectGetMidY(self.frame)) 

self.addChild(background) 

self.view!.wantsLayer = true 

let button = NSButton(frame: NSRect(x: self.frame.width/2, 
      y: self.frame.height/2, width: 50, height: 25)) 
self.view!.addSubview(button)