我有一個SKNode
的子類,當我想將它們添加到場景時得到通知。 知道SKNode
有一個名爲scene
的屬性,我試圖使用KVO,但由於某種原因,它不起作用。sprite套件 - 當節點被添加到場景時得到通知
- (id)init
{
self = [super init];
if (self)
{
[self addObserver:self forKeyPath:@"scene" options:NSKeyValueObservingOptionNew context:nil];
}
return self;
}
- (void)dealloc
{
[self removeObserver:self forKeyPath:@"scene"];
}
+ (instancetype)gameWorld
{
return [[self alloc] init];
}
#pragma mark - Observer methods
// never called
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (object == self && [keyPath isEqualToString:@"scene"])
{
KKScene *scene = change[NSKeyValueChangeNewKey];
NSLog(@"%@", scene);
}
}
是否有節點已添加到場景時得到通知?或者KVO運作良好,但我在這裏做錯了什麼?
可能重複[SKSpriteNode,加入/退出父勾去掉(http://stackoverflow.com/questions/ 19648578/skspritenode-added-to-removed-from-parent-hook) – LearnCocos2D
因爲我明白了。僅當場景是節點的直接父節點時才設置「場景」屬性。我甚至認爲即使subchilds會有場景設置 – Yaman
您可以觀察節點的父屬性,而不是場景屬性。 – ZeMoon