有没有办法逐渐改变场景的背景颜色,而不是一次性改变颜色?
在我的场景中,我有一个按钮,将背景颜色设置为与场景初始创建中调用的颜色不同的颜色,就像这样:
-(void) newBackgroundColor
{
self.backgroundColor = [SKColor blackColor];
}
然而,(当然)这会立即将颜色从我的初始颜色切换为黑色,而我希望它的变化与使用colorizeWithColor:
的节点大致相同,其中两种颜色从一种颜色“淡化”到另一种颜色。我的猜测是我需要在设置新颜色之前实现SKAction
,但backgroundColor
属性似乎不支持着色操作。
这可能吗?我一直无法知道到目前为止的情况。 感谢
答案 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