簡體   English   中英

SKCropNode奇怪的行為

[英]SKCropNode Strange Behaviour

當使用SKCropNode時,我希望添加到cropNode的圖像可以根據相應的蒙版像素alpha值來調整每個單獨的像素alpha值。

經過大量研究,我得出的結論是圖像像素的alpha值不會調整到遮罩,但是在繼續我的項目之后,我注意到一個特定的cropNode圖像的像素實際上正逐漸消失到遮罩像素字母值??? 太好了! 但是,在重現此內容后,我不知道它為什么這樣做?

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值的唯一方法。

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

誰能看到導致這種現象的原因,或者是否有更好的方法來獲得我想要的效果?

面具:

在此處輸入圖片說明

結果:

在此處輸入圖片說明

如果刪除:

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

結果:

在此處輸入圖片說明

如果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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM