2014-02-09 5 views
2

Как бы вы могли оживить цвет фона SKScene? Я пробовал анимацию UIView, но не удивительно, что это не сработало. Есть ли эквивалент для этого в Sprite-Kit?Цель c - Анимировать цвет фона SKScene

Я ищу что-то подобное, но для Sprite-Kit:

[UIView animateWithDuration:0.25 animations:^{ 
    self.backgroundColor = [UIColor redColor]; 
}]; 

На данный момент, как работа вокруг я накладываемый на UIView над SKView, но я хотел бы что-то более гибким ,

Я относительно новичок в Sprite-Kit, так что извинения, если это очень просто сделать!

На данный момент у меня есть:

-(id) initWithSize:(CGSize)size { 
    if (self = [super initWithSize:size]) { 
     _bg = [SKSpriteNode spriteNodeWithColor:[SKColor colorWithRed:0.13 green:0.13 blue:0.13 alpha:1] size:self.size]; 
     _bg.position = CGPointMake(self.size.width/2, self.size.height/2); 
     [self addChild:_bg]; 
    } 
    return self; 
} 

-(void) colorise :(UIColor*)color { 
    [_bg runAction:[SKAction colorizeWithColor:color colorBlendFactor:_bg.colorBlendFactor duration:1]]; 
} 

Кроме того, после инициализации SKView, я устанавливаю цвет Б.Г. спрайта в зависимости от NSUserDefault значения.

if ([[NSUserDefaults standardUserDefaults] integerForKey:@"currGameMode"] == 0) { 
((bubbleAnimation2*)_bubbleEffectView.scene).bg.color = [UIColor colorWithRed:0.13 green:0.13 blue:0.13 alpha:1];} 
else {((bubbleAnimation2*)_bubbleEffectView.scene).bg.color = [UIColor colorWithRed:0.25 green:0.13 blue:0.13 alpha:1];} 

Спасибо!

+1

Добавление полной SpriteNode сцены и анимировать его цвет, используя, например. Раскраска SKActionWithColor? – nzs

+0

Удивительный, спасибо! Наверное, я переусердствовал над проблемой. Я просто немного удивлен, что в Sprite-Kit нет ничего, чтобы сделать это немного легче. – Hamish

+0

Хм .. на самом деле это не совсем так, как предполагалось, оно исчезает до цвета, а затем к другому оттенку цвета. – Hamish

ответ

1

Ну, я придумал полностью переработанное решение! У меня есть массив фоновых спрайтов и клонировать исходный спрайт и изменить его цвет, а затем анимировать его в

Вот мой код:.

-(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]; 
    } 
} 
Смежные вопросы