是否有人知道SKTexture
上两个不同的SKSpriteNode
之间是否存在淡出(随着时间的推移)的方法。我假设您不能直接执行此操作并计划使用具有更高ZPosition
的重复子精灵来实现淡入淡出,但我只想检查是否存在使用{{1 ()我看过了。
答案 0 :(得分:2)
以下代码应解决此问题,假设新纹理适合旧纹理(它不会淡化 out 以前的纹理,而只是淡化 新的一个在上面)。我遗漏了一些小的实现细节,比如计时模式。
-(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;
}