使用CCBlink实现闪烁的特效
游戏中的某个按钮或者某个区域,为了重点吸引玩家去操作,会有闪烁的特效;可以使用CCBlink实现,下面是实现代码:
//闪烁效果
void LoginScene::shanShuo()
{
//背景
auto _img = static_cast<ImageView *>(this->csb->getChildByName("Image_10"));
auto _sp = static_cast<Sprite *>(this->csb->getChildByName("Sprite_ss"));
//第一个参数为闪烁效果的总时间,第二个参数为闪烁的次数
CCActionInterval * blinkAction = CCBlink::create(2, 10);
_sp->runAction(CCRepeatForever::create(blinkAction));
}
效果如下图:
使用CCBlink 精灵消失的问题:
之前遇到过这样的问题,使用CCBlink 精灵执行完动作之后,消失不见了,百度谷歌了一番,得知有可能出现精灵刚好到透明的那部分,所以最好在精灵执行完动作之后,让精灵setvisible显示出来。参考代码如下:
void Hero::afterHurt()//英雄闪烁之后有可能不见了,这里把它重新显示出来
{
this->setVisible(true);
wudi = false;
}
void Hero::hurt()
{
hp--;
if (hp >= 0)
{
//使用CCBlink之后必须等精灵执行完之后,强制设置精灵的可视值为true才能显示,否则有可能出现空白
CCActionInterval* action = CCBlink::create(1.0f, 3);
CCFiniteTimeAction* action1 = CCSequence::create(action,CCCallFunc::create(this,
callfunc_selector(Hero::afterHurt)),NULL);
this->runAction(action1);
}
}