在Sprite-Kit中更改精灵图像

6

有没有办法更改已经用另一张图片初始化的精灵的图像?

我尝试了:

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]

            }];

}

2个回答

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

我更喜欢现代的点符号表示法:self.sprite.texture = [SKTexture ...] - CodeSmile

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接