有谁知道是否有办法在 SKSpriteNode 上的两个不同 SKTexture 之间(随着时间的推移)淡化。我假设您不能直接执行此操作并计划使用具有更高 ZPosition 的重复子 Sprite 来实现淡入淡出,但我只是想检查是否没有使用 SKAction 我看过的。
Best Answer-推荐答案 strong>
下面的代码应该解决这个问题,假设新纹理适合旧纹理(它不会淡出 out 先前的纹理,而只是淡入 in新的在上面)。我省略了一些次要的实现细节,例如计时模式。
-(void) fadeTextureSKTexture *)newTexture ontoSpriteNodeSKSpriteNode *)referenceSpriteNode withDurationCFTimeInterval)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 *) fadeInSpriteWithTextureSKTexture *)newTexture referenceSpriteNodeSKSpriteNode *)referenceSpriteNode {
SKSpriteNode * fadeInSprite = [SKSpriteNode spriteNodeWithTexture:newTexture size:[referenceSpriteNode size]];
[fadeInSprite setAlpha:0];
[fadeInSprite setAnchorPoint:[referenceSpriteNode anchorPoint]];
[fadeInSprite setPosition:[referenceSpriteNode position]];
return fadeInSprite;
}
关于ios - 在 SKSpriteNode 上的两个不同 SKTexture 之间淡入淡出,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/23007535/
|