Objective c - Animate background colour of SKScene

那年仲夏 提交于 2019-12-06 11:38:42

Well, I came up with a completely over-engineered solution! I have an array of background sprites and I clone the original sprite and change it's color and then animate it in.

Here's my code:

-(void) colorise :(UIColor*)color {
   // [_bg runAction:[SKAction colorizeWithColor:color colorBlendFactor:_bg.colorBlendFactor duration:1]];
    if ([_bgObjects count] != 0) {
        SKSpriteNode* newBg = [[_bgObjects objectAtIndex:0] copy];
        newBg.color = color;
        newBg.alpha = 0;
        [self insertChild:newBg atIndex:1];
        [newBg runAction:[SKAction fadeAlphaTo:1 duration:0.5]];
        [_bgObjects addObject:newBg];

        for (int i = 0; i < ([_bgObjects count]-1); i++) {
            [[_bgObjects objectAtIndex:i] runAction:[SKAction fadeAlphaTo:0 duration:0.5]];
        }

    }
}

-(void) update:(NSTimeInterval)currentTime {
    if ([_bgObjects count] > 1) {

    NSMutableArray* toDelete = [NSMutableArray arrayWithObjects: nil];

    for (SKSpriteNode* bg in _bgObjects) {
        if ((bg.alpha == 0) && !bg.hasActions) {
            [bg removeFromParent];
            [toDelete addObject:bg];
        }} [_bgObjects removeObjectsInArray:toDelete];
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!