Cocos2d-x:停止以前的操作

Cocos2d-x:停止以前的操作,cocos2d-x,Cocos2d X,如何停止Cococs2d-x中的上一个操作 我的精灵在init方法中有连续的动画 最近我发起了移动行动 我只想停止那个动作 重复的动画仍然只存在。对于动作,我们可以使用setTag方法设置标记。当您不想执行该操作时,请使用CCNode方法“removeActionByTag”删除该操作。对参与方来说有点晚 另一种解决方案是在调用runAction(newAction)之前调用stopAction(currentAction)。这使您能够在开始newAction之前停止currentActionS

如何停止Cococs2d-x中的上一个操作 我的精灵在init方法中有连续的动画 最近我发起了移动行动 我只想停止那个动作
重复的动画仍然只存在。

对于动作,我们可以使用setTag方法设置标记。当您不想执行该操作时,请使用CCNode方法“removeActionByTag”删除该操作。

对参与方来说有点晚

另一种解决方案是在调用
runAction(newAction)
之前调用
stopAction(currentAction)
。这使您能够在开始
newAction
之前停止
currentActionSave
。您需要以某种方式存储
currentAction
,可能是一个成员变量,以便以后可以调用
stopAction(currentAction)

下面是一个代码示例:

Dog.h

#include "cocos2d.h"   

class Dog : public cocos2d::Sprite
{
public:
    ....

private:
    ....

    bool OnTouchEnded(cocos2d::Touch* touch, cocos2d::Event* /*event*/)

    cocos2d::Action* m_currentAction = nullptr;
};
Dog.cpp

#include "Dog.h"

....

bool Dog::OnTouchEnded(cocos2d::Touch* touch, cocos2d::Event* /*event*/)
{
    using namespace cocos2d;

    ....

    MoveTo* moveTo = MoveTo::create(time, pos);

    if (m_currentAction)
    {
        stopAction(m_currentAction);
    }

    m_currentAction = runAction(moveTo);

    return true;
}
希望这对别人有帮助