Spritekit:使用Colorize With Color更改背景颜色

时间:2014-03-05 13:33:19

标签: sprite-kit

有没有办法逐渐改变场景的背景颜色,而不是一次性改变颜色?

在我的场景中,我有一个按钮,将背景颜色设置为与场景初始创建中调用的颜色不同的颜色,就像这样:

-(void) newBackgroundColor
{
    self.backgroundColor = [SKColor blackColor];
}

然而,(当然)这会立即将颜色从我的初始颜色切换为黑色,而我希望它的变化与使用colorizeWithColor:的节点大致相同,其中两种颜色从一种颜色“淡化”到另一种颜色。我的猜测是我需要在设置新颜色之前实现SKAction,但backgroundColor属性似乎不支持着色操作。

这可能吗?我一直无法知道到目前为止的情况。 感谢

3 个答案:

答案 0 :(得分:2)

该操作仅适用于实际的SKSpriteNode对象 - 例如,在场景中添加白色背景大小的图像,作为您将着色的背景,然后运行colorizeWithColor:采取行动。请务必将colorBlendFactor设置为1.0。

答案 1 :(得分:1)

SKSpriteNode *bg = [SKSpriteNode spriteNodeWithColor:[SKColor blueColor] size:self.size];
bg.position = CGPointMake(bg.size.width/2, bg.size.height/2);
[self addChild:bg];    
SKAction *color1 = [SKAction colorizeWithColor:[SKColor orangeColor] colorBlendFactor:1 duration:5];
SKAction *color2 = [SKAction colorizeWithColor:[SKColor blackColor] colorBlendFactor:1 duration:10];
SKAction *color3 = [SKAction colorizeWithColor:[SKColor blueColor] colorBlendFactor:1 duration:15];    
[bg runAction:[SKAction repeatActionForever:[SKAction sequence:@[color1,color2,color3]]]];

答案 2 :(得分:0)

针对Swift4进行了更新:

let colorBackground = SKAction.colorize(with: SKColor.white.withAlphaComponent(1.0), colorBlendFactor: 1.0, duration: 0.25)

scene.childNode(withName: BackgroundCategoryName)!.run(colorBackground)

其中BackgroundCategoryName是SKSpriteNode,例如:

let background = childNode(withName: BackgroundCategoryName) as! SKSpriteNode