问题由来: 我想实现类似于《神魔之塔》怪物死亡后掉落的卡牌回收时,同时旋转(饶Y轴旋转)、缩小、移动的效果。
代码如下:
<pre class="brush:cpp; toolbar: true; auto-links: false;">
CCSprite* lpoCard = CCSprite::create("card.png");
lpoCard->setScale(0.2f);
lpoCard->setPosition(ccp(visibleSize.width / 2.0f,
visibleSize.height/2));
this->addChild(lpoCard, 1, 111);
CCPoint ldDesPoint = CCPointMake(40, CCDirector::sharedDirector()->getWinSize().height - 40); // 目标点
float lfSecondDuration = 5.0f; // 移动到目标点的周期
float lfScaleBy = 0.01f; // 缩小的倍数
unsigned int luSecondRotateCycles = 40; // 第二次旋转的圈数
ccBezierConfig ldBezierConfig;
ldBezierConfig.controlPoint_1 = npoSprite->getPosition(); <img title = 'QQ图片20131108183553.jpg' src='http://cdn.cocimg.com/bbs/attachment/Fid_41/41_270765_4fd1da018cbcdd7.jpg' >
ldBezierConfig.controlPoint_2 = ccp(ldDesPoint.x + 20, ldDesPoint.y + 50);
ldBezierConfig.endPosition = ldDesPoint;
CCActionInterval* lpoBezierToAction = CCBezierTo::create(lfSecondDuration,ldBezierConfig);
CCActionInterval* lpoScaleByAction = CCScaleBy::create(lfSecondDuration, lfScaleBy);
CCActionInterval* lpoRotationY2 = CCOrbitCamera::create(lfSecondDuration, 1, 0, 0, 180 * luSecondRotateCycles, 0, 0);
// 组合上面三个动作
CCActionInterval* lpoSpawnAction = CCSpawn::create(lpoBezierToAction, lpoScaleByAction, lpoRotationY2,NULL);
// 使上面三个动作加速执行
CCActionInterval* lpoExpoInAction = CCEaseExponentialIn::create(lpoSpawnAction);
// 3、最后隐藏精灵
CCActionInterval* lpoFadeOutAction = CCFadeOut::create(0.1f);
CCActionInterval* lpoSequenceAction = CCSequence::create(lpoExpoInAction, lpoFadeOutAction, NULL);
npoSprite->runAction(lpoSequenceAction);
不知道怎么直接插入截图,所以改成附件了。。 效果就是在执行的过程中,这个卡会慢慢的发生变形。比如本来看起来高是比宽要大的,结果旋转到快结束的时候,宽比高要多了,求大神来帮帮忙解决下,谢谢了。
<img title = 'QQ图片20131108183553.jpg' src='http://cdn.cocimg.com/bbs/attachment/Fid_41/41_270765_4fd1da018cbcdd7.jpg' >