关于游戏主角精灵闪烁的问题

  • 本帖最后由 小龙子 于 2012-8-21 15:37 编辑 *

     做了个类似于超级玛丽的冒险小游戏,想在主角碰到怪后闪烁几下,就用了CCBlink,这是按时间闪烁的,所以有时候闪烁之后游戏主角消失了显示不出来,估计是刚好闪烁倒空白帧了,请教下大神们,怎样解决这个问题呢??
  • 本帖最后由 hackfantasy 于 2012-8-21 15:40 编辑 *

那改用次数吧,反正效果不会差的……可以计算好一次循环的时间然后乘以次数等于闪烁时间,但感觉不保险。
或者完了后重新绘一次贴图。

奇怪……按道理这个方法应该不会出现消失的情况,楼主你检测一下随后的代码……估计是有bug了。我单独测试CCBlink没问题。

— Begin quote from ____

hackfantasy 发表于 2012-8-21 16:10 url

奇怪……按道理这个方法应该不会出现消失的情况,楼主你检测一下随后的代码……估计是有bug了。我单独测试C …

— End quote

我看了我的代码,逻辑上是没有问题的啊!我一前辈说我这可能是因为闪烁是按时间闪烁的,所以就可能有时候碰巧闪烁到空白帧,就显示不出来。可是我感觉应该与帧没有很大关系把,我把主角精灵放到最外层了也不可能是背景给挡住了丫,好奇怪。谢谢你的解答,呵呵!

— Begin quote from ____

hackfantasy 发表于 2012-8-21 15:39 url

那改用次数吧,反正效果不会差的……可以计算好一次循环的时间然后乘以次数等于闪烁时间,但感觉不保险。

— End quote

大哥能讲得详细点儿么,小弟是新手,不是很懂。我的主角精灵是psprite,用这句话pSprite->runAction(CCBlink::CCBlink::actionWithDuration(0.3f, 3));就是0.3秒闪烁3次。你的意思是把0.3改成背景循环一次的时间再乘以3么?

— Begin quote from ____

hackfantasy 发表于 2012-8-21 15:39 url

那改用次数吧,反正效果不会差的……可以计算好一次循环的时间然后乘以次数等于闪烁时间,但感觉不保险。

— End quote

大哥能讲得详细点儿么,小弟是新手,不是很懂。我的主角精灵是psprite,用这句话pSprite->runAction(CCBlink::CCBlink::actionWithDuration(0.3f, 3));就是0.3秒闪烁3次。你的意思是把0.3改成背景循环一次的时间再乘以3么?

如果闪烁是放在刷新线程中的,有可能停止的时候,会看不见,闪烁只是改变精灵的 可视 值,如果要确保闪烁停止后,能看见精灵,就让精灵执行一个动作,强制设置 精灵 的可视 值 为 true,就可以了

— Begin quote from ____

syhuang 发表于 2012-8-22 11:09 url

如果闪烁是放在刷新线程中的,有可能停止的时候,会看不见,闪烁只是改变精灵的 可视 值,如果要确保闪烁停 …

— End quote

呵呵,谢谢你的启发,刚开始我也试了这个方法,用pSprite->setIsVisible(true);但是闪烁是有时间的,只有在闪烁停止后再设置其可视为真,才会有效吧?

也不一定的,只要停止闪烁的动作就可以了