(已解决)关于runAction

我给人物做移动,
moveBy->setTag(1);

在使用runAction(moveBy);

因为有时候我要暂停它,
我就是用了stopActionByTag(moveBy)

他确实停止了…而且销毁了…
但是我这里让他停止后 做一系列效果后 要恢复他的动作
让他走之前没走完的

不知道怎么实现

lz可以这么做:
//移动动作
CCMoveBy *move= CCMoveBy::create(4.0f,ccp(500,500));
//回调函数
CCCallFunc *cal = CCCallFunc::create(this,callfunc_selector(HelloWorld::callfunc));
//创建动作序列,顺序执行动作,其他效果在callfunc中编写
CCSequence *seo = CCSequence::create(move,cal,NULL);
pSprite->runAction(seo);

额. 可能我没讲明白问题.

我的问题是, 我停止了某个Action后 他会销毁掉,
但是我想做的是 停止某个动作, 等我需要的时候(不被销毁) 再继续这个动作, 等他做完再让内存管理移除他

而版主 你告诉我的 只是个 队列里多个了回调函数

回调是那边做你要的动画啊!效果做完了,可以后面再执行move动作,这个是序列,具体还是要你自己需求,如果要同时执行可以使用CCSpawn

用CCSpeed,暂停的时候将速度倍数设为0,继续的时候将速度倍数设为1

对, 他是个 Sequence, 就你上面的例子 CCSequence *seo = CCSequence::create(move,cal,NULL);
他应该是move完成后才执行cal,但是我现在要的是 在move的过程中 他可能要做停止, 然后在我需要的时候才继续执行这个move(而我要的是 及时,随时做效果)
而不是move完毕后做效果(这个是完成后做效果)

那…可以用下ActionManager的pauseTarget暂停一下精灵

getActionManager()->pauseTarget
嗯, 用这个确实可以停止

然后可以用getActionManager()->resumeTarget来重新做动作,~~ 但是
并没有继续做动作的方法…~~

而且我比较担心一个问题 我这个里面毕竟是用moveBy来执行, moveBy有个时间控制 多少秒后偏移了Point, 如果他这个重新做动作, 怕时间上的偏移 还有位置上的偏移

额 这个方法上网查了些 感觉不太会用 也不太好用的样子… 毕竟是用在runAction(), CCSpeed能随时调控其他Action?

CCSpeed* action = CCSpeed::create(seo, 1);
action->setTag(1);
pSprite->runAction(action);

((CCSpeed*) (pSprite->getActionByTag(1)))->setSpeed(0);

自己试一下先吧 :10: :10::10:

谢谢 ,这两天公司搬家, 这个方法 我下周做功能的时候会试下!

嗯, 下周会去试试, 这周还有别的功能要完善

哈哈 你的可以! 我成功了.

顺便说下 setSpeed(int) -1为停止 0为正常速度 1以上好像是加倍了…

— Begin quote from ____

引用第13楼q386351746于2014-04-20 20:23发表的 回 9楼(孤独の快乐) 的帖子 :
哈哈 你的可以! 我成功了.

顺便说下 setSpeed(int) -1为停止 0为正常速度 1以上好像是加倍了… http://www.cocoachina.com/bbs/job.php?action=topost&tid=198266&pid=932004

— End quote

没试过负数,不过0应该就停止了吧