2016-09-16 5 views
5

Я обновляю код для быстрой 3. Я создал пользовательский путь для моего объекта spritekit, который работает в быстром 2. Однако, теперь я получаю ошибку компиляции:CGPath не работает в 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() 

Ошибка при передаче nil во втором аргументе при добавлении к пути. Я попытался передать опасный указатель следующим образом:

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

, но затем получил еще одну странную ошибку.

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

Однако не было функции перемещения с именем аргумента. Однако произошел переход (toParent:).

ответ

15

Большинство синтаксисов изменены в Swift 3, но они не удалили какие-либо методы API (например, CGPathMoveToPoint) и просто переименованы, как показано ниже.

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

спасибо! Не думал проверять переменную для функции-члена. – patrickd

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