在 Sprite-Kit 中更改精灵图像

Posted

技术标签:

【中文标题】在 Sprite-Kit 中更改精灵图像【英文标题】:Changing sprite Images in Sprite-Kit 【发布时间】:2014-04-20 15:13:56 【问题描述】:

有没有办法改变已经用另一个图像初始化的精灵的图像?

我试过了:

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]

            ];

【问题讨论】:

【参考方案1】:

有。在内部,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 ...]【参考方案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];

【讨论】:

以上是关于在 Sprite-Kit 中更改精灵图像的主要内容,如果未能解决你的问题,请参考以下文章

从精灵表中以 sfml 动画精灵

将精灵从灰度着色为彩色

在 Unity 5 中,为啥精灵表中的某些精灵在精灵中不可见,但在 UI 图像中可以正常工作?

在一个动画剪辑中更改多个精灵

CSS 背景位置更改 - Chrome 错误

CSS精灵图像+背景重复其中的一部分