使用SKLabel文本裁剪SKTexture

时间:2017-04-06 21:59:35

标签: ios swift swift3 sprite-kit skspritenode

要在SpriteKit中创建一个按钮,我创建了一个带有SKShapeNode的圆角矩形,然后在它上面放置了一个SKLabel。

看起来像这样: enter image description here

我希望标签下的背景随着它下面的任何内容而改变。所以在图片中,T,E和A的一半都是紫色的。

有没有办法让字体中途变色?或以某种方式裁剪白色矩形纹理与放置在其上的SKLabel。这种方式没有标签,而是从纹理中剪下标签。基本上,我希望字体颜色是它背后的任何东西。

我不得不以某种方式导入图像和代码。

1 个答案:

答案 0 :(得分:4)

Knight0fDragon在评论中有理由,这是一个很好的建议。没有textureFromNode,您可以执行另一种解决方案。 您可以使用背景和标签准备cropNode,然后使用按钮和cropNode进行另一次背景克隆:

import SpriteKit
class GameScene: SKScene {
    override func didMove(to view: SKView) {
        let background = SKSpriteNode.init(imageNamed: "background.png")
        background.zPosition = 1
        let background2 = background.copy() as! SKSpriteNode
        //label
        let titleLabel = SKLabelNode(fontNamed: "AvenirNext-Bold")
        titleLabel.fontSize = 150
        titleLabel.fontColor = SKColor.black
        titleLabel.text = "RATE"
        titleLabel.horizontalAlignmentMode = .center
        titleLabel.zPosition = 5
        titleLabel.blendMode = .subtract
        //cropNode
        let cropNode = SKCropNode()
        cropNode.addChild(background)
        cropNode.maskNode = titleLabel
        self.addChild(cropNode)
        cropNode.zPosition = 5
        //button
        let button = SKShapeNode(rect: CGRect(x: -300, y: -50, width: 600, height: 200), cornerRadius: 100)
        button.zPosition = 4
        button.fillColor = SKColor.white
        self.addChild(background2)
        self.addChild(button)
    }
}

使用的图片enter image description here

<强>输出

enter image description here

另一个要测试的背景:

enter image description here

输出2:

enter image description here