Свифт: Как получить позицию 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), но почти вы знаете, где находится ваша фигура.