为什么创建的 Sprite 名称不保存甚至不返回?
我在场景的初始化中添加了几个对象(SKSpriteNode)
-(id)initWithSize:(CGSize)size {
NSArray *oxyObjects = [self.oxygens objectsNamed:@"oxy"];
for (NSDictionary *enemyObj in oxyObjects) {
SKSpriteNode *oxyNode = [SKSpriteNode spriteNodeWithImageNamed:@"oxygen"];
NSString *valeurX=enemyObj[@"x"];
float x = [valeurX floatValue];
NSString *valeurY=enemyObj[@"y"];
float y = [valeurY floatValue];
CGPoint oxyPosition = CGPointMake(x, y);
oxyNode.position = oxyPosition;
oxyNode.name = @"ballOxygen";
NSLog(@"oxy %@",oxyNode);
[self.map addChild:oxyNode];
}
日志给我这个 Sprite 的正确名称
oxy name:'ballOxygen' texture:[ 'oxygen@2x.png' (24 x 24)] position:{454, 99} size:{12, 12} rotation:0.00
为了检查碰撞,我尝试使用
[[self children] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
SKNode *node = (SKNode *)obj;
NSLog(@"obj : %@", obj);
或者这个
NSArray *nodes = self.children;
for(SKNode * node in nodes){
SKSpriteNode *obj = (SKSpriteNode *) node;
NSLog(@"obj : %@", obj);
但它总是返回一个空名称
obj : name:'(null)' texture:[ 'Bird1@2x.png' (8 x 24)] position:{100, 100} size:{17, 12} rotation:0.00
最佳答案
我的最佳猜测:
您正在将 oxyNode 添加到 self.map,但您正在枚举 self.children,而您可能应该枚举 self.map.children。
试试这个:
[self.map.children enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
SKNode *node = (SKNode *)obj;
NSLog(@"obj : %@ (%p)", obj, obj);
}];
关于ios - SKSpriteNode 返回空名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24095332/