2015-12-11 1 views
1

Я хочу, чтобы иметь возможность отображать изображение, которое отображает только части изображения, находящиеся в пределах его родительского. Если изображение выходит за пределы его родительских границ, эта часть изображения станет прозрачной.Отображать изображение спрайта только внутри границ его родителя

Просто пример, но скажем, что у меня есть спрайт, который составляет 100 х 100, и к этому спрайту добавляется детский спрайт, а он 200 х 200 и цвет синий, только 100 х 100 синего спрайта будут отображаться на экран. Это то, что я надеюсь сделать, если это возможно.

ответ

1

Вы можете использовать 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) 

Здесь у вас есть:

  1. nodeToMask объект, который SKSpriteNode и представляет собой изображение, которое вы хотите замаскировать. Вы добавляете его к узлу обрезки в качестве дочернего элемента.

  2. cropNode объект, который является контейнером для изображения, которое вы планируете маскировать.

  3. у вас есть фактическая маска, которая равна SKSpriteNode, и вы назначаете ее maskNode свойство узла урожая.

Для получения дополнительной информации о SKCropNode ознакомьтесь с docs.

+0

Это идеальный !!! Именно то, что я искал, спасибо. – Jarron

Смежные вопросы