3

有谁知道是否有办法SKTextureSKSpriteNode. 我假设您不能直接执行此操作并计划使用更高的重复子精灵ZPosition来实现淡入淡出,但我只是想检查是否没有使用SKAction我看过的(s)的某种方法。

4

1 回答 1

2

下面的代码应该解决这个问题,假设新纹理适合旧纹理(它不会淡出先前的纹理,而只是淡入顶部的新纹理)我省略了一些次要的实现细节,例如计时模式。

-(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;
}
于 2014-09-06T20:21:44.203 回答