Обновление: похоже, что в iOS 10 исправлена эта проблема. Я обновился до Swift 3 и Xcode 8, и все работает должным образом.Сложность SKCropNode при добавлении дополнительных дочерних элементов SKNode в иерархии
Я столкнулся с этой проблемой пару раз, и теперь я не могу сказать, если это ошибка в SKCropNode или если я просто злоупотребляя его. Возможно, есть кое-какая документация, которую мне не хватает, чтобы объяснить, почему это происходит?
У меня есть узел урожая с прямоугольником прямоугольника 100x100 в качестве маски. Если я поместил в него синий круг, он обрезается правильно.
// Create a crope node with a small square.
let cropNode = SKCropNode()
let cropNodeMask = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 100, height: 100))
cropNodeMask.fillColor = UIColor.whiteColor()
cropNode.maskNode = cropNodeMask
self.addChild(cropNode)
// Create a blue circle and put it in the crop node.
let blueCircle = SKShapeNode(circleOfRadius: 110)
blueCircle.fillColor = UIColor.blueColor()
blueCircle.strokeColor = UIColor.clearColor()
cropNode.addChild(blueCircle)
Теперь, когда я устанавливаю тот же круг внутри другой пустой SKNode и поместить этот контейнер внутри одного узла культур, подрезание не удается.
// Create a crope node with a small square.
let cropNode = SKCropNode()
let cropNodeMask = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 100, height: 100))
cropNodeMask.fillColor = UIColor.whiteColor()
cropNode.maskNode = cropNodeMask
self.addChild(cropNode)
// Create a container to hold the circle.
let container = SKNode()
cropNode.addChild(container)
// Create a blue circle and put it in the container.
let blueCircle = SKShapeNode(circleOfRadius: 110)
blueCircle.fillColor = UIColor.blueColor()
blueCircle.strokeColor = UIColor.clearColor()
container.addChild(blueCircle)
Но спрайт в том же контейнере, кажется, быть обрезаны в порядке.
// Create a crope node with a small square.
let cropNode = SKCropNode()
let cropNodeMask = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 100, height: 100))
cropNodeMask.fillColor = UIColor.whiteColor()
cropNode.maskNode = cropNodeMask
self.addChild(cropNode)
// Create a container to hold the sprite.
let container = SKNode()
cropNode.addChild(container)
// Create a spaceship and add it to the container.
let spaceshipNode = SKSpriteNode(imageNamed: "Spaceship")
spaceshipNode.anchorPoint = CGPointZero
container.addChild(spaceshipNode)
Попробуйте что-то другое, кроме SKShapeNode, используйте SKLabelNode, я могу сказать, что вы скачали SKShapeNode, что было доказано – Knight0fDragon
Ярлык обрезается правильно. Таким образом, это не узел урожая - это узел формы, который сломан. –
Да, у SKShapeNode есть множество ошибок, лучше всего использовать его, чтобы превратить его в текстуру. – Knight0fDragon