У меня есть простой подкласс SKCameraNode
, который я назвал InteractiveCameraNode
. На данный момент это очень просто: мне нужно, чтобы что-то происходило при изменении положения моей камеры. Вот что я сделал:
class InteractiveCameraNode: SKCameraNode {
// MARK: - Properties
var enableInteraction = true
var positionResponders = [(CGPoint, CGPoint) -> Void]()
/// Calls every closure in the `positionResponders` array
override var position: CGPoint {
didSet {
if enableInteraction {
for responder in positionResponders {
responder(oldValue, position)
}
}
}
}
}
Поскольку у меня может происходить несколько вещей, когда камера перемещается, у меня есть массив замыканий, которые вызываются при изменении положения камеры. Пока все работает отлично, за исключением того, что наблюдатель didSet
не вызывается, если я перемещаю камеру с помощью действия. Если я использую ограничение на камеру, чтобы заставить ее отслеживать узел, а затем перемещать этот узел с помощью действия, это работает. Если я перемещаю камеру вручную, она работает. Почему не работает с действиями?