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

  • 相关阅读:
    UnitTest测试套件及运行器
    DDT实现数据驱动
    MySQL练习题部分答案(未完待续)
    day58自我回顾版
    Linux 下安装pip
    wget用法汇总
    Linux基础操作整理
    pip安装django失败
    利用"SQL"语句自动生成序号的两种方式
    Python2.*与Python3.*共存问题
  • 原文地址:https://www.cnblogs.com/HangZhe/p/5777603.html
Copyright © 2011-2022 走看看