2014-06-16 18 views
13

Sto provando a sottoclasse SKShapeNode con Swift. Finora ho avuto qualcosa di simile:Sottoclasse SKShapeNode con Swift

import UIKit 
import SpriteKit 

class STGridNode: SKShapeNode { 

    init() { 
     super.init() 
     self.name = "STGridNode" 
     self.fillColor = UIColor(red: 0.11, green: 0.82, blue: 0.69, alpha: 1) 
    } 

} 

Nel mio codice che voglio quindi fare qualcosa sulla falsariga di:

let s = STGridNode(rectOfSize: CGSize(width: 100, height: 100)) 

Quindi la mia domanda è - come si implementa rectOfSize nel initialiser per STGridNode? Ho provato:

init(rectOfSize: CGPoint) { 
    super.init(rectOfSize: rectOfSize); 
} 

ma che dà un errore: 'Impossibile trovare un sovraccarico di init che accetta gli argomenti forniti'

+1

Quale errore state ottenendo quando si tenta il metodo di inizializzazione? – drewag

+0

@drewag, ho aggiornato la mia domanda con un po 'più di dettaglio. Grazie :) – samturner

risposta

22

Hai due problemi con il codice si è tentato:

  1. rectOfSize in SKShapeNode prende un non CGSize un CGPoint
  2. rectOfSize in SKShapeNode è un inizializzatore convenienza quindi non sarai in grado di chiamarlo da una sottoclasse. Dovrete chiamare super.init() e implementare la funzionalità rect soli

Si può fare qualcosa di simile:

init(rectOfSize: CGSize) { 
    super.init() 

    var rect = CGRect(origin: CGPointZero, size: rectOfSize) 
    self.path = CGPathCreateWithRect(rect, nil) 
} 
+0

Fantastico, grazie - funziona alla grande! – samturner

+1

self.path = CGPath (rect: rect, transform: nil) –

Problemi correlati