在 CCSprite 中淡入图像?

Posted

技术标签:

【中文标题】在 CCSprite 中淡入图像?【英文标题】:Fade through image in CCSprite? 【发布时间】:2011-11-24 20:01:16 【问题描述】:

CCSprite 中的图像可以淡入淡出吗?目前我只知道 Cocos2D 中的对象可以淡入淡出,但我不确定这是否可能。 有没有办法做到这一点?

谢谢!

【问题讨论】:

“淡化”通常意味着改变图像的透明度。有些东西告诉我这不是你的意思。能详细解释一下吗? 嗯,我想不立即更改 CCSprite 中的图像,我想通过图像为更改设置动画。我想术语转换在这里有效:P 我也想用一个 CCSprite 来实现这一点,因为下面的回答者希望我使用多个精灵,这让我 100% 更难。 你的意思是动画,即动画精灵。 Fade 与透明度有关,transform 表示“改变位置”。 正确!那我该怎么做呢? 【参考方案1】:

好吧,您可以使用CCFadeOut 删除当前图像,同时在不透明度为0 的相同位置创建新精灵,并使用CCFadeIn 使其淡入。如果你同时做,你应该会得到一个不错的效果。

【讨论】:

我怎样才能用一个精灵实现这一点? 如果你只有一个,你怎么能期望“淡出图像”? 我不知道这就是我需要建议的原因:P 这一定是可能的! 我认为您的问题表述不当。尝试使用不同的词,因为我认为我没有完全理解您的意思。【参考方案2】:

您可以使用 2 个 CCSprites 淡化多个图像。

    CCSprite A 对前面的 zOrder 1 不透明 CCSprite B 透明(如果 CCSprite A 覆盖 CCSprite B 则不需要),zOrder 0 FadeOut CCSprite A,然后将其置于后台,zOrder 0 CCSprite B zOrder 1 在前面,在第 2 点之后可见 将 CCSprite A 的图像交换到每个不平整 重复一切,这次以相反的顺序给出 CCSprite A 和 B 的参数

交换精灵:

CCCallBlock *exchangeImage = [CCCallBlock actionWithBlock:^
    sprite.texture = [[CCTextureCache sharedTextureCache] addImage:@"image.png"];
];

如果需要,添加延迟:

CCDelayTime *delayAction = [[CCDelayTime alloc] initWithDuration:0.4f];

重复一遍:

CCSequence *exchangeSequence = [CCSequence actions:exchangeImage, delayAction, nil];
CCRepeatForever *repeat = [CCRepeatForever actionWithAction:exchangeSequence];
[self runAction:repeat];

【讨论】:

以上是关于在 CCSprite 中淡入图像?的主要内容,如果未能解决你的问题,请参考以下文章

渲染 CCSprite 纹理会给出旧图像

设置 CCSprite 的框架?

cocos2d CCSprite 碰撞问题

使 CCSprite 向其他 CCSprite 移动

用另一个 CCSprite/CCNode 剪辑 CCSprite/CCNode - Cocos2D

cocos2d 如何创建继承与 ccsprite的类并在项目中使用