zoukankan      html  css  js  c++  java
  • 关于Cocos2d-x中使用完Blink动作后精灵突然消失的问题的解决

    精灵使用Blink 执行完动作之后,消失不见了,原因是闪烁的过程中精灵刚好到空纹理(透明)的那部分,这时候用户通过某种操作中断闪烁动作,导致下个状态的时候,精灵依然停留在空纹理的状态。所以最好在精灵执行完闪烁动作之后,或者执行下个动作之前,让精灵setvisible(true)显示出来。

    解决方式:

    格式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);  

    格式3(最好用)

    在执行动作前先写一句,把相应的精灵显现出来,这样就不会出现因为刚好闪烁到空的精灵纹理时因为用户强迫中断,导致下个操作的时候精灵纹理不显现,一直停留在空纹理的状态。

    this->setVisible(true);

  • 相关阅读:
    js工具库
    细说log4j之log4j 1.x
    细说log4j之概述
    细说RESTful API安全之概述
    【转】javascript代码混淆和压缩
    细说RESTful API之入门介绍
    j2ee应用开发调试工具
    java定时器实现总结
    浏览器书签同步工具
    简单备份mysql数据库策略及实现方式
  • 原文地址:https://www.cnblogs.com/HangZhe/p/5777603.html
Copyright © 2011-2022 走看看