首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么背景图像覆盖SKCropNode儿童?

为什么背景图像覆盖SKCropNode儿童?
EN

Stack Overflow用户
提问于 2015-07-27 19:26:47
回答 1查看 251关注 0票数 1

我在屏幕上显示了一个蓝色的方形图像。此外,一个黄色的球在这个正方形的中间产卵,并向左移动。黄色的球在离开正方形时会被切断,而它会像它应该的那样向左移动(原因是我为什么使用SKCropNode)。

我注意到,当我取消对背景场景代码的评论时,背景就是你看到的全部,因为它覆盖了整个屏幕。我原以为改变zPosition可以解决这个问题,但事实并非如此。有什么建议吗?

当我取消对背景代码的注释时,我知道蓝色方块在那里,因为当我触摸到该区域时,我打印出了节点的名称。只是在代码未注释时无法看到它。

代码语言:javascript
复制
    /* Add Background To Scene
    var bg = SKSpriteNode(imageNamed: "bg")
    bg.zPosition = 1
    bg.position = CGPointMake( CGRectGetMidX (self.frame), CGRectGetMidY (self.frame));
    bg.name = "bg"
    self.addChild(bg)
    */

    var blue = SKSpriteNode(imageNamed: "blueSquare")
    blue.zPosition = 3
    blue.name = "blue"

    var yellow1 = SKSpriteNode(imageNamed: "yellow") 
    yellow1.zPosition = 4 
    yellow1.name = "yellow"

    var mask = SKSpriteNode(color: SKColor.blackColor(), size: CGSizeMake(100, 100))
    var cropNode = SKCropNode()

    cropNode.addChild(blue)
    cropNode.addChild(yellow1) 
    cropNode.maskNode = mask
    self.addChild(cropNode)
    cropNode.position = CGPointMake( CGRectGetMidX (self.frame), CGRectGetMidY (self.frame));

    yellow1.runAction(SKAction.moveByX(-300, y: 0, duration: 2.0))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-27 21:11:03

简单的回答是,如果设置cropNode.zPosition = 2,则作物节点的子节点将出现在背景节点的上方。

较长的答案是,如果view.ignoresSiblingOrder = true (默认),节点的绘制顺序由其全局zPosition决定,其中

节点的全局Z=节点的Z+父的Z+父的父的Z+.

但是,这似乎不适用于SKCropNode。看起来Sprite只使用作物节点的子节点的zPositions来确定绘制它们的相对顺序,而作物节点的zPosition决定全局Z。

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

https://stackoverflow.com/questions/31661607

复制
相关文章

相似问题

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