2014-04-20 8 views
5

Gibt es eine Möglichkeit, das Bild eines Sprites zu ändern, das bereits mit einem anderen Bild initialisiert wurde?Sprite-Bilder im Sprite-Kit ändern

Ich habe versucht:

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] 

      }]; 

}

Antwort

12

Es gibt. Intern verwendet die Klassenmethode spriteNodeWithImageNamed: nur den Bildnamen, den Sie übergeben, um die Textureigenschaft des Knotens festzulegen. Wenn Sie zu irgendeinem Zeitpunkt die Textur des Knotens beliebig ändern möchten, können Sie sie einfach direkt setzen.

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

Es gibt auch einige SKActions, dies zu tun, falls Sie den Knoten wollen zwischen verschiedenen Texturen, um die Größe oder animieren.

[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

i bevorzugen moderne Punktnotation: self.sprite.texture = [SKTexture ...] – LearnCocos2D

2

Sie müssen Textur-Array wie folgt erstellen:

[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];