首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SKCropNode奇怪的行为

SKCropNode奇怪的行为
EN

Stack Overflow用户
提问于 2016-05-07 20:20:56
回答 1查看 567关注 0票数 1

在使用SKCropNode时,我希望添加到cropNode中的图像根据相应的遮罩像素Alpha值调整每个单独的像素Alpha值。

经过大量的研究,我得出的结论是,图像像素alpha值不会根据蒙版进行调整,然而,在继续我的项目后,我注意到一个特定cropNode图像的像素实际上正在褪色到蒙版像素Alpha值?这太棒了!然而,在重现这个之后,我不知道它为什么要这样做?

代码语言:javascript
运行
复制
import SpriteKit

var textureArray: [SKTexture] = []
var display: SKSpriteNode!

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {

    anchorPoint = CGPointMake(0.5, 0.5)
    backgroundColor = UIColor.greenColor()

    fetchTexures()

    display = SKSpriteNode()

    let image = SKSpriteNode(texture: textureArray[0])
    display.addChild(image)

    let randomCropNode = SKCropNode()
    display.addChild(randomCropNode)

    let cropNode = SKCropNode()
    cropNode.maskNode = display

    let fill = SKSpriteNode(color: UIColor.whiteColor(), size: frame.size)
    cropNode.addChild(fill)

    cropNode.zPosition = 10

    addChild(cropNode)


}

func fetchTexures() {

    var x: Int = 0

    while x < 1 {

        let texture: SKTexture = SKTextureAtlas(named: "texture").textureNamed("\(x)")
        textureArray.append(texture)

        x += 1

        }
    }

} 

上面的代码给了我想要的效果,但是如果你去掉下面的代码,图像像素的alpha值不再根据蒙版调整??下面的代码实际上并没有在我的项目中使用,但它是我调整像素alpha值的唯一方法。

代码语言:javascript
运行
复制
let randomCropNode = SKCropNode()
display.addChild(randomCropNode)

有没有人能看到是什么导致了这种行为,或者是否有更好的方法来获得我想要的效果?

掩码:

结果:

如果删除:

代码语言:javascript
运行
复制
let randomCropNode = SKCropNode()
display.addChild(randomCropNode)

结果:

EN

回答 1

Stack Overflow用户

发布于 2016-05-07 20:54:01

仅当alpha在<.5 (禁用)和>=.5(启用)之间变化时,裁剪节点才会打开和关闭像素

但是,要应用淡入淡出,如果alpha蒙版只是黑色(具有各种alpha级别)和透明,则将蒙版作为常规纹理应用于裁剪节点,并让alpha混合处理淡入淡出效果。

至于你的代码问题,你确定你的裁剪节点是裁剪的,而不仅仅是渲染纹理吗?我不知道纹理看起来是什么样子来尝试和再现这一点。

提供给裁剪节点的节点不能是另一个节点的子节点;但是,它可以有自己的子节点。

当渲染裁剪节点的内容时,裁剪节点首先将其掩码绘制到私有缓冲区中。然后,它渲染子对象。渲染其子对象时,将对照遮罩中的相应像素验证每个像素。如果遮罩中的像素的alpha值小于0.05,则图像像素将被遮罩。任何未由遮罩节点渲染的像素都会自动遮罩。https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKCropNode_Ref/#//apple_ref/occ/instp/SKCropNode/maskNode

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

https://stackoverflow.com/questions/37088465

复制
相关文章

相似问题

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