ios - SKCropNode 在 Xcode 7 + Swift 2 中无法正常工作

标签 ios xcode swift sprite-kit

在我的 SpriteKit 游戏中,我有一个带有裁剪节点的可滚动节点,因此它在整个屏幕上是不可见的。我制作了一个黑色和非常小的 alpha 值的节点,它的效果超出了我的预期。

    let rectNode = SKSpriteNode(color: UIColor(red: 0, green: 0, blue: 0, alpha: 0.000001), size: CGSize(width: width, height: height - 100) )
    rectNode.position = CGPoint(x: 0, y: 0)
    rectNode.zPosition = 1
    rectNode.anchorPoint =  CGPoint(x: 0, y: 0)                

    rectNode.addChild(contentNode)        

    let cropNode = SKCropNode()
    cropNode.maskNode = rectNode.copy() as! SKSpriteNode
    cropNode.addChild(rectNode)
    cropNode.zPosition = 9

    addChild(cropNode)

由于 XCode 7 我的内容节点不可见,如果我将 rectNode 的 alpha 更改为 1,则内容在黑色背景下可见,所以我认为屏蔽发生了一些问题。

是我做错了什么还是 Xcode 7 中的错误?

最佳答案

看看你的代码,我实际上不确定它在 Xcode 6 中是如何工作的。由于蒙版是一个 alpha 几乎为零的矩形,它实际上不应该阻止显示任何 SKCropNode 的像素 - 也就是说,它应该没有效果。来自 the docs :

If the pixel in the mask has an alpha value of less than 0.05, the image pixel is masked out.

掩码节点中的所有像素的 alpha < 0.05,因此整个 rectNode 应该是不可见的。

这将有助于为它们提供更清晰的名称,并分别创建您的可见内容和 mask 。尝试这样的事情:

let contentNode = SKSpriteNode()  // Whatever you want to have displayed and cropped.
// adjust contentNode's position and size

let cropNode = SKCropNode()
// adjust cropNode's position and size

let maskNode = SKSpriteNode()
// adjust maskNode's position and size
maskNode.color = UIColor.blackColor()  // If you're not going to use an image for this, you need to fill it with a color. The black part will act as a "window", with everything outside of it being invisible.

cropNode.maskNode = maskNode
cropNode.addChild(contentNode)

关于ios - SKCropNode 在 Xcode 7 + Swift 2 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32907741/

相关文章:

xcode - IB 中的绑定(bind)和共享 NSUserDefaults 无法保存数据时出现问题

ios - 我想在重新安装之前卸载旧版本的 iOS App

ios - 如何用手指移动线条?

ios - 什么是 ViewController.swift(接口(interface))文件 - 在 Counterparts

iphone - iOS - 在用作 UITableView header 的 ViewController 上设置 socket

ios - PPSSignatureView 崩溃

ios - systemLayoutSizeFittingSize 没有为我的 UILabel 返回足够大的尺寸

swift - Swift 中的公共(public)扩展 : Float vs Float. 类型

iphone - 当数组的计数已知时,按顺序用数字初始化 NSArray

iOS : UIScrollView scrolling reset controls position to initials