2014-04-20 22 views
5

Có cách nào để thay đổi hình ảnh của một ảnh đã được khởi tạo với một hình ảnh khác không?Thay đổi ảnh sprite trong Sprite-Kit

tôi đã cố gắng:

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] 

      }]; 

}

Trả lời

12

Có. Bên trong, phương thức lớp học spriteNodeWithImageNamed: chỉ sử dụng tên hình ảnh bạn truyền để đặt thuộc tính kết cấu của nút. Điều đó đang được nói, nếu tại bất kỳ điểm nào bạn muốn tự ý thay đổi kết cấu của nút, bạn chỉ có thể đặt nó trực tiếp.

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

Ngoài ra còn có một số SKActions để thực hiện việc này, trong trường hợp bạn muốn nút đổi kích thước hoặc tạo hoạt ảnh giữa các hoạ tiết khác nhau.

[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

tôi thích ký hiệu dấu chấm hiện đại: self.sprite.texture = [SKTexture ...] – LearnCocos2D

2

Bạn phải tạo mảng kết cấu như thế này:

[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]; 
Các vấn đề liên quan