在 SKSpriteNode 上的两个不同 SKTexture 之间淡入淡出

Posted

技术标签:

【中文标题】在 SKSpriteNode 上的两个不同 SKTexture 之间淡入淡出【英文标题】:Fade between two different SKTextures on SKSpriteNode 【发布时间】:2014-04-11 08:38:12 【问题描述】:

有谁知道在SKSpriteNode 上的两个不同SKTextures 之间是否有办法淡化(随着时间的推移)。我假设您不能直接执行此操作并计划使用具有更高 ZPosition 的重复子精灵来实现淡入淡出,但我只是想检查是否有使用 SKAction(s) 的方法我看多了。

【问题讨论】:

是的,使用两个精灵并交叉淡化它们 【参考方案1】:

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

-(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;

【讨论】:

以上是关于在 SKSpriteNode 上的两个不同 SKTexture 之间淡入淡出的主要内容,如果未能解决你的问题,请参考以下文章

SKSpriteNode在x和y轴上的定位错误

RNG vs EDG | SKT vs KTB [20160826]

在动画期间更改 SKSpriteNode 的锚点?

mysql中关于concat的问题!

如何使用该节点的自定义类检测在单独场景中创建的 skspritenode 上的触摸

将 SKSpriteNode 移动到 SKTileMapNode 上的特定图块