在 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 中淡入图像?的主要内容,如果未能解决你的问题,请参考以下文章