auto litte2=Sprite::create(“anything”);
MoveBy *myby = MoveTo::create(3, ccp(200, 100)); //注意这里需要3秒
myby->setTag(1231);
myby->retain();
litte2->runAction(myby);
auto myby2 = MoveTo::create(2, ccp(400, 200)); //这个动作时间2秒
myby2->retain();
scheduleOnce([&,litte2,myby2,myby](float dt) {
litte2->pause();
litte2->getActionManager()->pauseTarget(litte2);
FiniteTimeAction my = static_cast<FiniteTimeAction>(litte2->getActionByTag(1231));
auto seqaa = Sequence::create(my, myby2, NULL);
litte2->getActionManager()->resumeTarget(litte2);
litte2->runAction(seqaa);
}, 1.0f,“myonce”); //这个动作添加 在1秒后
这个实现 ,初看好像是添加了,但是, 这个添加的动作是一个全新的,不是继承于myby已经移动了1秒基础上的, 他在新动作移动到ccp(200, 100) 时,在已经移动一秒的基础上,重新用了3秒钟。这不是我需要的,我希望能够继承前一个动作,目前未找到好方法,我知道,可以通过计算剩余时间上 用3-1=2 秒 的时间从新绑定一个动作,移除原来的动作,来解决这个问题!但是我想要继承我以前的动作! 暂时我不知道更好的办法, 我认为出现这个的原因可能是因为,计时器的绑定问题,前一个动作的已用时间 ,新的Sequence无法智能的获取,并计算到新动作中,导致的,这只是我的推测。官方有没有这样的函数,动态新增动作的,如果有能告知一下么,如果没有,那我就自己实现了。计算剩余距离与速度,得到时间,重新绑定新动作,这样看上去是一样的,但是本质却完全不同。
希望能回答我两个问题,一个是出这个问题的原因是什么,我的推测是否正确。
个是,如何在获取前一个动作之后,继续动态的添加新的动作,而不必等前一个动作结束,官方推荐的做法是什么!!