褪色帧进出

时间:2012-08-21 14:43:11

标签: cocos2d-iphone

我有一组帧需要一个接一个地显示,但不是简单地删除前一帧并绘制下一帧,我需要淡出前一帧并同时淡入新帧

在cocos2d中实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

- (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中,这将有效。在这种情况下,必须将所有精灵添加到父级中以逐个显示。你可以改进这段代码,例如,每次只使用一个精灵并改变它的纹理。

如果你想永远展示照片,你可以尝试这样的事情

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

}
相关问题