Затухание между двумя разными SKTextures на SKSpriteNode

Кто-нибудь знает, есть ли способ исчезнуть (со временем) между двумя разными SKTexture на SKSpriteNode. Я предполагаю, что вы не можете сделать это напрямую, и планирую использовать дублированный дочерний спрайт с более высоким ZPosition для реализации затухания, но я просто хотел проверить, что не было какого-то метода, использующего SKAction(s), который я просмотрел. .


person fuzzygoat    schedule 11.04.2014    source источник
comment
ага, используйте два спрайта и затухайте их   -  person LearnCocos2D    schedule 11.04.2014


Ответы (1)


Следующий код должен решить эту проблему, предполагая, что новая текстура помещается поверх старой (она не исчезает предыдущую текстуру, а просто вводит новую на Топ). Я не упомянул незначительные детали реализации, такие как режим синхронизации.

-(void) fadeTexture:(SKTexture *)newTexture ontoSpriteNode:(SKSpriteNode *)referenceSpriteNode withDuration:(CFTimeInterval)duration {

    SKSpriteNode * fadeInSprite = [self fadeInSpriteWithTexture:newTexture referenceSpriteNode:referenceSpriteNode];

    [[referenceSpriteNode parent] addChild:fadeInSprite];
    [fadeInSprite runAction:[SKAction sequence:@[
        [SKAction fadeAlphaTo:1 duration:duration],
        [SKAction runBlock:^{
            [fadeInSprite removeFromParent];
            [referenceSpriteNode setTexture:newTexture];
        }]
    ]]];
}

-(SKSpriteNode *) fadeInSpriteWithTexture:(SKTexture *)newTexture referenceSpriteNode:(SKSpriteNode *)referenceSpriteNode {

    SKSpriteNode * fadeInSprite = [SKSpriteNode spriteNodeWithTexture:newTexture size:[referenceSpriteNode size]];
    [fadeInSprite setAlpha:0];
    [fadeInSprite setAnchorPoint:[referenceSpriteNode anchorPoint]];
    [fadeInSprite setPosition:[referenceSpriteNode position]];
    return fadeInSprite;
}
person dave    schedule 06.09.2014