Как получить кадр видимого контента от 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 и их масок, но мне пришло в голову, что мне нужно будет рассмотреть альфа этой маски, чтобы определить, есть ли фактический контент, который увеличивает кадр. Звучит сложно.
Есть ли простой способ рассчитать это?