Что я хочу сделать: расширить SKNode с настраиваемым свойством, простым int, а затем использовать его с enumerateChildNodesWithName:usingBlock:
.Добавление пользовательских свойств в SKNode и их использование с помощью 'enumerateChildNodesWithName: usingBlock:'
Поскольку я являюсь новичком, мне не удалось понять учебники о том, как это сделать с помощью свойства userData SKNode. Я также попытался создать подкласс NSObject/SKNode и добавить там свойство. Но тогда мне не удалось заставить его работать с enumerateChildNodesWithName:usingBlock:
.
Расширение SKNode показалось мне более прямым.
компилятор не жалуется на следующий код:
SKNode_weight.h
@interface SKNode()
@property int weight;
@end
MyScene.h
#import "SKNode_weight.h"
MyScene.m
#import "MyScene.h"
#import "SKNode_weight.h"
@implementation MyScene
-(void) spawnBall {
SKNode *ballNode = [SKNode node];
ballNode.weight = 10; // fixed value for simplicity
ballNode.name = @"ball";
[self addChild:ballNode];
}
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
[self spawnBall];
}
return self;
}
-(void) sumWeight{
[self enumerateChildNodesWithName:@"ball" usingBlock:^(SKNode *node, BOOL *stop) {
NSLog(@"%i", node.weight);
}];
}
@end
Билд является успешным л, но я получаю следующее сообщение об ошибке:
-[SKNode setWeight:]: unrecognised selector sent to instance 0x96328f0
Я надеюсь, что кто-нибудь может дать пример быстрого и безболезненного решения. Спасибо, Flo