一个CCAction动作完成后的回调问题

CCAction动作完成后的回调同时会被触发两次

void HelloWorld::run(CCNode* node)
{
 time_seed++;
 srand((unsigned)time(0)+time_seed);
 int x = rand() % 300;
 int y = rand() % 300;
 x += 50;
 y += 50;
 printf("x=%d,y=%d
",x,y);
 node->runAction(CCSequence::actions(CCMoveTo::actionWithDuration(1,CCPointMake(x,y)),CCCallFuncN::actionWithTarget(node,callfuncN_selector(HelloWorld::run)),NULL));
}

printf("x=%d,y=%d
",x,y);
运行的效果,CCMoveTo动画完成后,printf会输出两次。。。

因为你掉了两次run

你这段 代码的意图是执行完动画后想要回调别的动作?那你回调方法怎么能是CCCallFuncN::actionWithTarget(node,callfuncN_selector(HelloWorld::run))?你应该再写个方法吧,还有你确定只输出了两次?

— Begin quote from ____

红光 发表于 2012-5-31 10:54 url

你这段 代码的意图是执行完动画后想要回调别的动作?那你回调方法怎么能是CCCallFuncN::actionWithTarget(n …

— End quote

我动画结束后,要回调 HelloWorld::run 方法,我知道这是一个类似递归的调用,我说的两次,不是一共执行了两次,而是没次动画完成后执行了两次,也就是说动画结束后触发了两次。我的意图是动画结束后触发一次,比如说我让一个精灵移动,移动完成后 回调 run 方法,重新生成坐标,然后移动到新的坐标,然后不断地重复这个过程。但是现在的问题是,一次动画结束后,好像run方法被执行了两次,因为我看见 有两条printf的内容同时出现在控制台

下断点单步调试一下

没用啊,单步看不出来人物动画是否完成,界面看起来卡卡的

  • 本帖最后由 高负债 于 2012-5-31 10:25 编辑 *

— Begin quote from ____

红光 发表于 2012-5-31 10:17 http://cocos2d.cocoachina.com/bbs/forum.php?mod=redirect&goto=findpost&pid=3876&ptid=902

因为你掉了两次run

— End quote

没有啊。。。是因为我调用自身的问题吗?