【问题标题】:Changing sprite Images in Sprite-Kit在 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]

            }];

}

【问题讨论】:

    标签: objective-c sprite-kit skspritenode


    【解决方案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];
    

    【讨论】:

      猜你喜欢
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多