Как получить кадр видимого контента от SKCropNode?

Похоже, что в SpriteKit, когда я использую маску в SKCropNode, чтобы скрыть некоторый контент, он не может изменить фрейм, рассчитанный calculateAccumulatedFrame, Мне интересно, есть ли способ рассчитать видимую рамку.

Быстрый пример:

import SpriteKit

let par = SKCropNode()

let bigShape = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 100, height: 100))
bigShape.fillColor = UIColor.redColor()
bigShape.strokeColor = UIColor.clearColor()
par.addChild(bigShape)

let smallShape = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 20, height: 20))
smallShape.fillColor = UIColor.greenColor()
smallShape.strokeColor = UIColor.clearColor()
par.maskNode = smallShape

par.calculateAccumulatedFrame() // returns (x=0, y=0, width=100, height=100)

Я ожидал par.calculateAccumulatedFrame() возвращать (x=0, y=0, width=20, height=20) на основе маски узла обрезки.

Я подумал, может быть, я мог бы сам кодировать функцию как расширение, которое в основном переопределяет calculateAccumulatedFrame с поддержкой проверки SKCropNodes и их масок, но мне пришло в голову, что мне нужно будет рассмотреть альфа этой маски, чтобы определить, есть ли фактический контент, который увеличивает кадр. Звучит сложно.

Есть ли простой способ рассчитать это?

0 ответов

Другие вопросы по тегам