Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么背景图像会覆盖SKCropNode子级?_Ios_Swift_Sprite Kit - Fatal编程技术网

Ios 为什么背景图像会覆盖SKCropNode子级?

Ios 为什么背景图像会覆盖SKCropNode子级?,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我有一个蓝色的正方形图像出现在屏幕上。此外,一个黄色的球产卵在这个正方形的中间,并向左活动。黄色的球在离开正方形时被切掉,而它应该向左移动(我使用SKCropNode的原因) 我注意到,只要我取消注释背景场景代码,背景就是你所看到的全部,因为它覆盖了整个屏幕。我原以为改变位置可以解决问题,但事实并非如此。有什么建议吗 另外,当我取消注释背景代码时,我知道蓝色方块在那里,因为当我触摸到那个区域时,我打印出了节点的名称。只是在代码未注释时无法看到它 /* Add Background To

我有一个蓝色的正方形图像出现在屏幕上。此外,一个黄色的球产卵在这个正方形的中间,并向左活动。黄色的球在离开正方形时被切掉,而它应该向左移动(我使用SKCropNode的原因)

我注意到,只要我取消注释背景场景代码,背景就是你所看到的全部,因为它覆盖了整个屏幕。我原以为改变位置可以解决问题,但事实并非如此。有什么建议吗

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

    /* 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))

简而言之,如果设置
cropNode.zPosition=2
,裁剪节点的子节点将显示在背景节点上方

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

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

但是,这似乎不适用于
SKCropNode
s。Sprite工具包似乎只使用裁剪节点子节点的
zPosition
s来确定绘制它们的相对顺序,而裁剪节点的
zPosition
确定全局Z