我有一个用作数据容器的Polygon类,但出于调试目的,我想通过将多边形作为子项添加到SKNode来绘制多边形。当我这样做时,我希望Polygon对象将边框精灵子项添加到自身。由于性能原因,我只想在将Polygon作为子节点添加到另一个节点时添加这些精灵。
Polygon对象本身是否有任何方法可以检测到它已被添加到场景中,或者我是否需要通过在将场景添加到场景后进行额外的createSprites
调用来告诉它?
我想我可以轮询父属性,但我正在寻找事件驱动的东西。
答案 0 :(得分:1)
在Swift中,您可以为您继承的类的属性定义属性观察者。
您可以观察自定义SKNode子类的parent
属性中的更改,如下所示:
class MyNode : SKNode {
override var parent: SKNode? {
didSet {
// parent node changed; do something
}
}
}
编辑:就像我在评论中提到的,在Objective-C(您不能使用属性观察者)中,您可以改为使用键值观察(KVO),并观察{{{ 1}} SKNode
属性:
实际代码:
parent
答案 1 :(得分:1)
在Objective-C中你可以这样做:
[node addObserver:self forKeyPath:@"parent" options:NSKeyValueChangeOldKey context:nil];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
//logic here
}
或者在这种情况下只是子类SKNode
并覆盖setParent: