cocos2d如何让精灵闪烁并且变得不可见?

8

我想让我的精灵闪烁,但它只是消失了,我已经在谷歌上搜索过,但是找不到解决方法,这是我正在做的:

    CCBlink * blinker = [CCBlink actionWithDuration: 0.5 blinks: 1];  
 [player runAction: blinker];

当我的两个精灵发生碰撞时,将调用此方法。碰撞发生时,我希望“玩家”精灵在几秒钟内闪烁。目前,当精灵发生碰撞时,“玩家”精灵变得不可见...谢谢


你应该接受一个答案或评论。 - phlebotinum
3个回答

3
CCBlink似乎是通过在给定的时间内切换你的精灵可见性的次数来工作的。根据您设置的持续时间,您可能会在动作结束时出现“关闭”可见状态(非常有错误,我以前也遇到过),这并不理想。
两个建议: (1)调整闪烁次数。 (2)始终强制精灵在闪烁结束时可见:
在您的闪烁动作末尾添加:[CCShow action]。 您可以将两个动作串成一个CCSequence。

+1 这个很好用,正是我所需要的。有趣的是两周前我建议 OP 接受一个答案时就遇到了这个,现在我也用上了它。 - phlebotinum

0

请验证在处理“onCollision”类型的事件时,不要将精灵从其父级中移除。请注意时间和位置的关系。


是的,当精灵碰撞时,什么也不会发生,我只想让玩家精灵闪烁,所以我将上面的代码放在了if (if (CGRectIntersectsRect(playerRect, rockRect)0中。 - sahil

0

Blink动画存在缺陷。我总是使用以下代码来确保对象在动画结束时仍然可见:

Sequence* action = Sequence::create(Blink::create(BLINK_DURATION, BLINK_TIMES), Show::create(), NULL);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接