cocos2dx动作问题求助--不借助回调函数怎么判断一个动作执行

我创建了一个精灵,首先移到屏幕中间,然后放大缩小等操作,这些放在CCSequence里面执行,没问题
然后创建第二个,移动到第一个精灵旁边,间隔30,操作同精灵一
以此类推,共创建了五个精灵,用A B C D E表示
精灵在屏幕中为

          A B C D E

然后随机移除一个,如果移除的不是最后一个则后面的精灵向前移动
例如,移除C,则D和E向左移动

          A B D E移动的时候乱七八糟的,想请教下怎么捕捉动作结束,如果能用回调函数自然最好了啊,关键是这个地方在哪里使用回调呢?

下面的代码,我用来检测如何捕捉动作结束,但都失败了
while里面的三个条件都不行,一直打印running。。。。求助怎么获取一个动作结束
CCMoveTo* move=CCMoveTo::create(3.0f,ccp(300,320));
CCAction* act=sp1->runAction(move);
while (!act->isDone())//sp1->isRunning();move->isDone()
{
CCLOG(“running”);
}

请教大神啊。。

— Begin quote from ____

樱木vs鸣人 发表于 2013-5-9 17:08 url

不确定因素是啥意思?意思是你的Action是随机的运动或并列运动??只要你run一个Action就可以用CCSequenc …

— End quote

因为可能要随机创建精灵等,创建的精灵也有动作等等,总之回调不行

— Begin quote from ____

樱木vs鸣人 发表于 2013-5-9 17:08 url

不确定因素是啥意思?意思是你的Action是随机的运动或并列运动??只要你run一个Action就可以用CCSequenc …

— End quote

而且我有很多精灵啊,run一个Action的话,其他精灵怎么理?

— Begin quote from ____

樱木vs鸣人 发表于 2013-5-8 16:58 url

自己灵活应用下回调函数就可以到达你的效果了

— End quote

因为中间有很多不确定因素啊,怎么个灵活用法

继续求助

— Begin quote from ____

88386896 发表于 2013-5-9 09:15 url

因为中间有很多不确定因素啊,怎么个灵活用法

— End quote

不确定因素是啥意思?意思是你的Action是随机的运动或并列运动??只要你run一个Action就可以用CCSequence(action1,CCCallFunc(stop)) 来判断,这个有什么问题??这样就可以了撒,木有啥问题吧

CCSequence::create(action1,action2,action3,CCCallFunc::create(stopCallBack))
stopCallBack()
{
sprite = getChildTag(1);
sprite ->sropAction();
} 可以看TestCpp ActionsEaseTest.cpp这个里面的动作DEMO

自己灵活应用下回调函数就可以到达你的效果了

— Begin quote from ____

88386896 发表于 2013-5-9 09:15 url

因为中间有很多不确定因素啊,怎么个灵活用法

— End quote

不确定因素是啥意思?意思是你的Action是随机的运动或并列运动??只要你run一个Action就可以用CCSequence(action1,CCCallFunc(stop)) 来判断,这个有什么问题??这样就可以了撒,木有啥问题吧

CCSequence::create(action1,action2,action3,CCCallFunc::create(stopCallBack))
stopCallBack()
{
sprite = getChildTag(1);
sprite ->sropAction();
} 可以看TestCpp ActionsEaseTest.cpp这个里面的动作DEMO

自己灵活应用下回调函数就可以到达你的效果了

这个函数可以用来判断所有的动作是否执行完 unsigned int CCNode::numberOfRunningActions()

回调函数是可以的,把函数写到父类,子类继承就解决问题,状态变量还是要使用的。

如果不需要动画过程那在移除精灵的同时重新设置其他精灵的位置
如果需要动画过程,那就update 再逐渐设置其他精灵的位置,这样原来精灵的动作不会受到影响