Свифт: Как получить позицию SKShapeNode?

У меня проблемы с позицией SKShapeNode. Я сохраняю путь от прикосновения пользователя к экрану. Затем я создаю многоугольник этого и помещаю его в pathOfShapeпеременная. Я создаю SKShapeNode этого пути, и все работает отлично. Я получаю нарисованный пользователем многоугольник, аккуратно нарисованный на экране.

Однако я хотел бы добавить больше материала на многоугольник. По некоторым причинам я не могу получить позицию SKShapeNode. Вместо этого, если я попытаюсь использовать position атрибут, он указывает на х:0,0, у:0,0, как показано ниже. Что здесь происходит? Как я могу получить актуальный position моего SKShapeNode?

var pathOfShape = CGPathCreateMutable()                       
//path of polygon added here to pathOfShape
var shapeNode = SKShapeNode()
shapeNode.path = pathOfShape 
shapeNode.name = "shape"
self.addChild(shapeNode)

let node1 = self.childNodeWithName("shape")
print(node1?.position)

результаты к Optional((0.0, 0.0))

1 ответ

Решение

На самом деле, если вы делаете CGPathнапример, треугольник:

var pathOfShape = CGPathCreateMutable()
let center = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
CGPathMoveToPoint(pathOfShape, nil, center.x, center.y)
CGPathAddLineToPoint(pathOfShape, nil, center.x + 50, center.y + 50)
CGPathMoveToPoint(pathOfShape, nil, center.x + 50, center.y + 50)
CGPathAddLineToPoint(pathOfShape, nil, center.x - 50, center.y + 50)
CGPathMoveToPoint(pathOfShape, nil, center.x - 50, center.y + 50)
CGPathAddLineToPoint(pathOfShape, nil, center.x - 50, center.y - 50)
CGPathMoveToPoint(pathOfShape, nil, center.x - 50, center.y - 50)
CGPathAddLineToPoint(pathOfShape, nil, center.x, center.y)
CGPathCloseSubpath(pathOfShape)

введите описание изображения здесь

И вы решили создать SKShapeNode исходя из этого пути:

let shape = SKShapeNode(path: pathOfShape)

Вы можете попросить, чтобы получить центр этой формы:

let center = CGPointMake(CGRectGetMidX(shape.frame),CGRectGetMidY(shape.frame))

Правильная позиция всегда (0.0, 0.0), но почти вы знаете, где находится ваша фигура.

Другие вопросы по тегам