在 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 中更改精灵图像的主要内容,如果未能解决你的问题,请参考以下文章