2016-09-16 14 views
5

Ja aktualizację kodu do szybkiego 3. Mam stworzył ścieżkę niestandardową dla mojego obiektu spritekit który działa w szybkim 2. Jednakże obecnie otrzymuję błąd kompilatora:CGPath nie pracuje w Swift 3

Nil is not compatible with expected argument type 'Unsafe Pointer CGAffineTransform'

let offsetX = player.size.width * player.anchorPoint.x 
let offsetY = player.size.height * player.anchorPoint.y 

let path = CGMutablePath() 

CGPathMoveToPoint(path, nil, 10 - offsetX, 16 - offsetY) 
CGPathAddLineToPoint(path, nil, 10 - offsetX, 0 - offsetY) 
CGPathAddLineToPoint(path, nil, 24 - offsetX, 0 - offsetY) 
CGPathAddLineToPoint(path, nil, 24 - offsetX, 16 - offsetY) 
CGPathAddLineToPoint(path, nil, 24 - offsetX, 16 - offsetY) 
CGPathAddLineToPoint(path, nil, 28 - offsetX, 40 - offsetY) 
CGPathAddLineToPoint(path, nil, 18 - offsetX, 46 - offsetY) 
CGPathAddLineToPoint(path, nil, 6 - offsetX, 36 - offsetY) 
CGPathAddLineToPoint(path, nil, 6 - offsetX, 18 - offsetY) 



path.closeSubpath() 

Błąd służy do przekazywania wartości zerowej w drugim argumencie podczas dodawania do ścieżki. Podjęto próbę podania niebezpiecznego wskaźnika:

var tr = CGAffineTransform.identity 
CGPathMoveToPoint(path, &tr, 10 - offsetX, 16 - offsetY) 
.... 

, ale potem pojawił się kolejny dziwny błąd.

CGPathMoveToPoint is unavailable. Use move(to: transform:)

Jednak nie było żadnej funkcji przenoszenia z nazwą argumentu do. Był jednak ruch (doParent:) jednak.

Odpowiedz

15

Większość składni została zmieniona w Swift 3, ale nie usunęli żadnych metod API (takich jak CGPathMoveToPoint), a nazwa została zmieniona tak, jak poniżej.

let path = CGMutablePath() 
path.move(to: CGPoint(x: 10.0, y: 10.0)) 
path.addLine(to: CGPoint(x: 10.0, y: 10.0)) 
+0

dziękuję! Nie myślałem, aby sprawdzić zmienną dla funkcji członka. – patrickd