2014-04-20 8 views
5

이미 다른 이미지로 초기화 된 스프라이트의 이미지를 변경하는 방법이 있습니까? 스프라이트 키트의 스프라이트 이미지 변경

내가 시도 :

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] 

      }]; 

}

답변

12

있습니다. 내부적으로, spriteNodeWithImageNamed: 클래스 메소드는 전달한 이미지 이름을 사용하여 노드의 텍스처 속성을 설정합니다. 즉, 노드의 텍스처를 임의로 변경하려는 경우 언제든지 직접 설정할 수 있습니다.

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

다른 텍스처 사이에서 노드의 크기를 조정하거나 애니메이션을 적용하려는 경우에 대비하여 SKActions가 있습니다. 당신은 이와 같은 텍스처 배열을 만들어야합니다

[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

내가 현대 점 표기법을 선호 : self.sprite.texture = [SKTexture ...] – LearnCocos2D

2

:

[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]; 
관련 문제