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

  • 相关阅读:
    nyoj 230/poj 2513 彩色棒 并查集+字典树+欧拉回路
    nyoj 211 Cow Contest
    nyoj 203 三国志 dijkstra+01背包
    nyoj 170 网络的可靠性
    nyoj 120 校园网络
    nyoj 115 城市平乱 dijkstra最短路
    nyoj 42 一笔画问题 欧拉路径
    nyoj 38 布线问题
    hdu 2089 不要62--数位dp入门
    nyoj 712 探 寻 宝 藏--最小费用最大流
  • 原文地址:https://www.cnblogs.com/HangZhe/p/5777603.html
Copyright © 2011-2022 走看看