2014-06-16 14 views
13

Próbuję podklasę SKShapeNode z Swift. Do tej pory mam coś takiego:Podklasy SKShapeNode z 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) 
    } 

} 

W moim kodu chcę tak zrobić coś wzdłuż linii:

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

więc moje pytanie - w jaki sposób mogę wdrożyć rectOfSize w initialiser dla STGridNode? Próbowałem:

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

Ale to daje błąd: „Nie można odnaleźć przeciążenie dla init, który akceptuje dostarczone argumenty”

+1

Co ty coraz błąd podczas próby metodę zainicjować? – drewag

+0

@drewag, zaktualizowałem moje pytanie z nieco większą szczegółowością. Dzięki :) – samturner

Odpowiedz

22

Masz dwa problemy z kodem próbowano:

  1. rectOfSize w SKShapeNode trwa nie CGSizeCGPoint
  2. rectOfSize w SKShapeNode jest inicjator wygoda więc nie będzie można wywołać go z podklasy. Trzeba będzie zadzwonić super.init() i wdrożenia funkcjonalności Rect siebie

można zrobić coś takiego:

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

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

Awesome, thank you - works great! – samturner

+1

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