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