2015-06-21 37 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的隨意,如果需要清除。