我有一组帧,我需要一个接一个地按顺序显示,但不是简单地擦除前一帧并绘制下一帧,我需要淡出前一帧并同时淡入新帧。
在 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 中,这将起作用。在这种情况下,必须将所有精灵添加到父精灵中才能一一显示。如果需要,您可以改进此代码,例如,只使用一个精灵并每次更改它的纹理。
如果你想永远显示图片,你可以尝试这样的事情
- (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];
}