请帮分析下代码
void HelloWorld::runTargetAction()
{
cocos2d::Vector _vecRunAction;
for (int i = 0; i < 3; i++)
{
Sprite* sprite = Sprite::create("XX.png");
this->addChild(sprite);
Vec2 ptEnd = Vec2(300, 300);
std::function funCallBack = &](Node* pNode)
{
if (pNode)
{
Spawn* pSpawn = Spawn::create(Action* 1, Action* 2, nullptr);
pNode->runAction(pSpawn);
}
};
CallFuncN* pCallFuncN = CallFuncN::create(std::bind(funCallBack, std::placeholders::_1, ptEnd));
_vecRunAction.pushBack(TargetedAction::create(sprite, pCallFuncN)); // 方式一
//_vecRunAction.pushBack(TargetedAction::create(sprite, Sequence::create(DelayTime::create(0.01), pCallFuncN, nullptr))); // 方式二
}
if (_vecRunAction.size())
{
float tdelay = 0.05f;
Action* p = this->runAction(Sequence::create(Spawn::create(_vecBombWaitRunAction), DelayTime::create(tdelay),
CallFuncN::create(&](Node *node){
CCLOG("run clear Action");
}), nullptr));
_vecRunAction.clear();
}
}
```
用方式一 funCallBack变量动作会被执行两次,
用方式二 则无问题 是pCallFuncN(FiniteTimeAction) 类的BUG(动作持继时间为0)吗 ?