仅在其父级边界内显示 Sprite 图像
Display Sprite Image Only Within Bounds of it's Parent
我希望能够显示一个图像,该图像仅显示图像中父级范围内的部分。如果图像超出其父边界,图像的那些部分将变为透明。
举个例子,假设我有一个 100 x 100 的 sprite,并且向这个 sprite 添加了一个子 sprite,它是 200 x 200 并且颜色为蓝色,那么只会显示 100 x 100 的蓝色 sprite屏幕上。如果可能的话,这就是我希望做的。
你可以使用SKCropNode来实现你所需要的:
let nodeToMask = SKSpriteNode(color: SKColor.blueColor(), size: CGSize(width: 200, height: 200))
let mask = SKSpriteNode(color: SKColor.blackColor(), size: CGSize(width: 100, height: 100))
let cropNode = SKCropNode()
cropNode.addChild(nodeToMask)
cropNode.maskNode = mask
cropNode.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame))
addChild(cropNode)
在这里,你有:
nodeToMask
对象,它是 SKSpriteNode 并代表您要屏蔽的图像。您将它作为子节点添加到裁剪节点。
cropNode
对象,它是您计划屏蔽的图像的容器。
你有一个实际的遮罩,它是 SKSpriteNode
,你将它分配给裁剪节点的 maskNode 属性。
有关 SKCropNode 的更多详细信息,请查看 docs。
我希望能够显示一个图像,该图像仅显示图像中父级范围内的部分。如果图像超出其父边界,图像的那些部分将变为透明。
举个例子,假设我有一个 100 x 100 的 sprite,并且向这个 sprite 添加了一个子 sprite,它是 200 x 200 并且颜色为蓝色,那么只会显示 100 x 100 的蓝色 sprite屏幕上。如果可能的话,这就是我希望做的。
你可以使用SKCropNode来实现你所需要的:
let nodeToMask = SKSpriteNode(color: SKColor.blueColor(), size: CGSize(width: 200, height: 200))
let mask = SKSpriteNode(color: SKColor.blackColor(), size: CGSize(width: 100, height: 100))
let cropNode = SKCropNode()
cropNode.addChild(nodeToMask)
cropNode.maskNode = mask
cropNode.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame))
addChild(cropNode)
在这里,你有:
nodeToMask
对象,它是 SKSpriteNode 并代表您要屏蔽的图像。您将它作为子节点添加到裁剪节点。cropNode
对象,它是您计划屏蔽的图像的容器。你有一个实际的遮罩,它是
SKSpriteNode
,你将它分配给裁剪节点的 maskNode 属性。
有关 SKCropNode 的更多详细信息,请查看 docs。