一連のフレームを順番に表示する必要がありますが、単純に前のフレームを消去して次のフレームを描画するのではなく、前のフレームをフェードアウトして新しいフレームを同時にフェードインする必要があります。
cocos2dでこれを達成する最良の方法は何ですか?
一連のフレームを順番に表示する必要がありますが、単純に前のフレームを消去して次のフレームを描画するのではなく、前のフレームをフェードアウトして新しいフレームを同時にフェードインする必要があります。
cocos2dでこれを達成する最良の方法は何ですか?
- (void) showFirstSpriteWithFade
{
if( [m_sprites count] > 0 )
{
CCSprite* spriteToShow = [m_sprites objectAtIndex: 0];
[m_sprites removeObjectAtIndex: 0];
id showAction = [CCSequence actions: [CCFadeIn actionWithDuration: fadeInDuration],
[CCFadeOut actionWithDuration: fadeOutDuration],
[CCCallFunc actionWithTarget: self selector:@selector(showFirstSpriteWithFade)],
nil];
[spriteToShow runAction: showAction];
}
}
これは、すべてのスプライトを配列 m_sprites に保存する場合に機能します。この場合、すべてのスプライトを親に追加して、1 つずつ表示する必要があります。必要に応じて、このコードを改善できます。たとえば、スプライトを 1 つだけ使用して、そのテクスチャを毎回変更します。
写真を永遠に表示したい場合は、次のようなものを試すことができます
- (void) showNextSpriteWithFade
{
m_shownSpriteIndex++;
if( m_shownSpriteIndex == [m_sprites count] )
{
m_shownSpriteIndex = 0;
}
CCSprite* spriteToShow = [m_sprites objectAtIndex: m_shownSpriteIndex];
id showAction = [CCSequence actions: [CCFadeIn actionWithDuration: fadeInDuration],
[CCFadeOut actionWithDuration: fadeOutDuration],
[CCCallFunc actionWithTarget: self selector:@selector(showNextSpriteWithFade)],
nil];
[spriteToShow runAction: showAction];
}