2014-04-20 8 views
5

C'è un modo per cambiare l'immagine di uno sprite che è già stato inizializzato con un'altra immagine?Modifica delle immagini sprite in Sprite-Kit

ho provato:

if ([node.name isEqualToString:@"NameX"]) { 
     SKAction *fadeOut = [SKAction fadeOutWithDuration:0.3]; 
     SKAction *fadeIn = [SKAction fadeInWithDuration:0.3]; 

     [self.sprite runAction:fadeOut]; 

     [self runAction:fadeOut completion:^{ 

      self.sprite = [SKSpriteNode spriteNodeWithImageNamed:@"NameY"]; 

      [self.sprite runAction:fadeIn] 

      }]; 

}

risposta

12

c'è. Internamente, il metodo di classe spriteNodeWithImageNamed: utilizza solo il nome dell'immagine che si passa per impostare la proprietà della trama del nodo. Detto questo, se in qualsiasi momento vuoi modificare arbitrariamente la trama del nodo, puoi semplicemente impostarlo direttamente.

[self.sprite setTexture:[SKTexture textureWithImageNamed:@"someOtherImage"]]; 

ci sono anche alcuni SKActions per fare questo, nel caso in cui si desidera che il nodo per ridimensionare o animare tra le diverse texture.

[self.sprite runAction:[SKAction setTexture:[SKTexture textureWithImageNamed:@"someOtherImage"] resize:YES]]; 


[self.sprite runAction:[SKAction animateWithTextures:@[tex1,tex2,tex3] timePerFrame:0.5 resize:YES restore:YES]]; 
+0

preferisco moderna notazione del punto: self.sprite.texture = [SKTexture ...] – LearnCocos2D

2

È necessario creare serie di struttura come questa:

[SKAction animateWithTextures:[NSArray arrayWithObjects: 
           [SKTexture textureWithImageNamed:@"im1.png"], 
           [SKTexture textureWithImageNamed:@"im2.png"], 
           [SKTexture textureWithImageNamed:@"im3.png"], 
           [SKTexture textureWithImageNamed:@"im4.png"], nil] timePerFrame:0.5 resize:YES restore:YES];