2015-06-21 32 views
0

我一直在试图逃离触摸的节点SKTexture变化,表示节点与循环创建:设置SKTexture为SKSpriteNode与给定sprite.name

int nameIndex = 0; 
for (int i = 1; i <= 3; i++) { 
     self.card = [SKSpriteNode spriteNodeWithImageNamed:@"front"]; 
     NSString *nodeName = [NSString stringWithFormat:@"node%d", nameIndex]; 
     self.card.name = nodeName; 
     self.card.position = CGPointMake((((board-self.card.size.width)/3)*i), y); 
     [self addChild:self.card]; 
     nameIndex++; 
    } 

在开始触摸我的方法有:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    UITouch *touch = [touches anyObject]; 
    NSArray *nodes = [self nodesAtPoint:[touch locationInNode:self]]; 
    for (SKNode *node in nodes) { 
     if ([node.name isEqualToString:@"node0"]) { 
      //Change the texture for the given node: 
      NSLog(@"Node 0"); 
      [self.card setTexture:[SKTexture textureWithImageNamed:nameIndex]]; 
     } 
     if ([node.name isEqualToString:@"node1"]) { 
      NSLog(@"Node 1"); 

     } 
     if ([node.name isEqualToString:@"node2"]) { 
      NSLog(@"Node 2"); 

     } 
} 

的触摸开始方法工作得很好,它只要一个精灵被触摸

但是运行块,与当前代码纹理变化只发生在预期最后创建的精灵。我一直在寻找一种方法来在一个名为X的精灵上运行一个方法,但我没有一种方法。

在此先感谢!

回答

0

原来我需要使用,而不是试图迫使有条件的。名称属性

SKSpriteNode *card = (SKSpriteNode*)[self childNodeWithName:@"node0"]; 
[card setTexture:[SKTexture textureWithImageNamed:@"aTexture"]]; 

不知道这是一个有益的问题childNodeWithName,MODS的随意,如果需要清除。