cocos2dx v3.2的stopAction()有坑?

莫名奇妙停掉其他动作啊,还会报:
cocos2dx: removeAction: Target not found

请问有碰到这种情况的么?有解决方法?

额。能贴一段代码吗?正常add remove是不会有问题的。。。你remove这个Action的时候它的节点还在么?

谢谢回复,先上一段代码吧。

void Monster::setBuff(int buffType, float buffEffect, float buffTime)
{
switch (buffType)
{
case FREEZE_BUFF:
if (m_isFreezeBuff) {
this->unschedule(schedule_selector(Monster::clearFreezeBuff));
} else {
this->addChild(buffArmt,20,“FREEZE_BUFF”);
m_isFreezeBuff = true;
this->stopAllActions();
//this->stopAction(m_actionMove);
}
this->scheduleOnce(schedule_selector(Monster::clearFreezeBuff),buffTime);

    break;

          ........

   }

}

Monster是基于Node的类,没有remove它,只用了stopAction。 这个函数的作用:中了这个buff后,让它停止运动buffTime秒。 一开始我用stopAction(actionName)来停止特定的运动,后来换成stopAllActions,但是都有同样的问题。

游戏开始阶段都比较正常,运行一段时间以后,会莫名奇妙出现停了不该停的动作,比如飞行中的子弹,比如其他运动中的怪物等。而我不加这个buff的时候游戏是完全正常的。

贴漏了一句,this->addChild(buffArmt,20,“FREEZE_BUFF”)这句前面有一句加载armuture资源的语句。

没看出来,感觉应该是逻辑上哪里有问题。

不要用定时器,定时器非常容易产生逻辑上得错误