我有一个简单的子类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
如果我使用动作移动相机,观察者不会被调用。如果我在相机上使用约束使其跟踪节点,然后通过动作移动该节点,它就可以工作。如果我用手移动相机,它就可以工作。为什么它不适用于动作?