码迷,mamicode.com
首页 > 其他好文 > 详细

关于Cocos2d-x中使用完Blink动作后精灵突然消失的问题的解决

时间:2016-08-16 20:09:53      阅读:871      评论:0      收藏:0      [点我收藏+]

标签:

精灵使用Blink 执行完动作之后,消失不见了,原因是有可能出现精灵刚好到透明的那部分,所以最好在精灵执行完动作之后,让精灵setvisible显示出来。

 

解决方式:

格式1

Blink * hurt = Blink::create(0.5, 5);

写一个回调函数,等到执行完Blink 动作后调用这个回调函数

CallFunc *call2 = CallFunc::create([this](){
  this->setVisible(true);
});

 this->runAction(Sequence::create(hurt,call2, NULL));

 

 

格式2

void Hero::afterHurt()//英雄闪烁之后有可能不见了,这里把它重新显示出来  

{  

    this->setVisible(true);  

 

}  

//使用Blink之后必须等精灵执行完之后,强制设置精灵的可视值为true才能显示,否则有可能出现空白  

Blink * hurt = Blink::create(0.5, 5);

FiniteTimeAction* action1 = CCSequence::create(hurt ,CallFunc::create(this , callfunc_selector(Hero::afterHurt)) , NULL);  

this->runAction(action1);  

 

 

  1. void Hero::afterHurt()//英雄闪烁之后有可能不见了,这里把它重新显示出来  
  2. {  
  3.     this->setVisible(true);  
  4.     wudi = false;  
  5. }  
技术分享

 

[cpp] view plain copy
 
 技术分享技术分享
  1. void Hero::hurt()  
  2. {  
  3.     hp--;  
  4.     if (hp >= 0)  
  5.     {  
  6.         //使用CCBlink之后必须等精灵执行完之后,强制设置精灵的可视值为true才能显示,否则有可能出现空白  
  7.         CCActionInterval*  action = CCBlink::create(1.0f, 3);  
  8.         CCFiniteTimeAction* action1 = CCSequence::create(action,CCCallFunc::create(this,  
  9.             callfunc_selector(Hero::afterHurt)),NULL);  
  10.         this->runAction(action1);  
  11.     }  
  12. }

关于Cocos2d-x中使用完Blink动作后精灵突然消失的问题的解决

标签:

原文地址:http://www.cnblogs.com/HangZhe/p/5777603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!