首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我在层次结构中添加额外的SKCropNode子级时,SKNode失败

当我在层次结构中添加额外的SKCropNode子级时,SKNode失败
EN

Stack Overflow用户
提问于 2016-09-04 18:17:51
回答 1查看 233关注 0票数 5

更新:看起来iOS 10已经修复了这个问题。我升级到Swift 3和Xcode 8,一切都如愿以偿。

我已经碰到过几次这个问题了,我不知道它是SKCropNode中的一个bug,还是我只是在滥用它。也许我遗漏了一些文档来解释为什么会发生这种情况?

我有一个具有100x100矩形形状的裁剪节点作为掩码。如果我在里面放一个蓝色的圆圈,它就会被适当地裁剪。

代码语言:javascript
复制
// 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中,并将该容器放置在相同的作物节点中时,裁剪就会失败。

代码语言:javascript
复制
// 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)

但是同一个容器里的雪碧看起来很好。

代码语言:javascript
复制
// 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)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-04 18:44:02

SKShapeNode被窃听了,最好不惜一切代价避免它。使用它创建形状,然后将其转换为用于SKSpriteNode的纹理。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39320085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档