cocos2d钟摆运动//2S内顺时针旋转-60度\x05\x05CCRotateBy *rotaBy2 = CCRot

我爱蓝酒瓶2022-10-04 11:39:541条回答

cocos2d钟摆运动
//2S内顺时针旋转-60度
x05x05CCRotateBy *rotaBy2 = CCRotateBy::create(2,-60);
x05x05//2S内顺时针旋转60度
x05x05CCRotateBy *rotaBy3 = CCRotateBy::create(2,60);
x05x05//2S内实现先满后快的变速运动
x05x05CCEaseInOut *ease2 = CCEaseInOut::create(rotaBy2,2);
x05x05//2S内实现先满后快的变速运动
x05x05CCEaseInOut *ease3 = CCEaseInOut::create(rotaBy3,2);
x05x05//合并2个变速运动
x05x05CCSequence *seq2 = CCSequence::createWithTwoActions(ease2,ease3);
x05x05//对象调用旋转
x05x05pDisc[m_Location-1]->runAction(CCRepeat::create(seq2,3));
为什么只在一边晃动,而且停的很突然,一点都不想钟摆一样慢慢的停下,

现在我设了4个运动,能不能把他们合并起来啊.我这样合并的时候直接终止了

已提交,审核后显示!提交回复

共1条回复
wn_li 共回答了16个问题 | 采纳率100%
1,首先rotaBy2使精灵的angle为-60,然后rotaBy3使精灵的angle为0,因为你用的是CCRotateBy,它只会根据当前的angle做出改变.所以只会在一边摆动.
2,你模拟钟摆的动作没有设置好,建议画出草图,描述好每个段落的动作,再写代码.
CCRotateBy *lRotate1 = CCRotateBy::create(1.0,60);
CCRotateBy *lRotate2 = CCRotateBy::create(1.0,-60);
CCRotateBy *lRotate3 = CCRotateBy::create(1.0,-60);
CCRotateBy *lRotate4 = CCRotateBy::create(1.0,60);
CCEaseSineOut *lEase1 = CCEaseSineOut::create(lRotate1);
CCEaseSineIn *lEase2 = CCEaseSineIn::create(lRotate2);
CCEaseSineOut *lEase3 = CCEaseSineOut::create(lRotate3);
CCEaseSineIn *lEase4 = CCEaseSineIn::create(lRotate4);
CCSequence *lSeq = CCSequence::create(lEase1,lEase2,lEase3,lEase4,NULL);
CCRepeatForever *lRepeat = CCRepeatForever::create(lSeq);
1年前

相关推荐

COCOS2d-x中的CCArray的用法,从中去除元素的疑惑
COCOS2d-x中的CCArray的用法,从中去除元素的疑惑
假如我往CCarray中添加了一个CCsprite指针类型的元素,在取出时转换成ccsprite*没有问题
但是假设我错误的转换成CCLabelTTF类型,也不会报错,这样在使用时就会有隐患
请问有没有方法判断一下类型转换的正确性
xie_Benson1年前1
托熟 共回答了17个问题 | 采纳率76.5%
使用 dynamic_cast 转换,如果类型不匹配,会返回一个空指针.
CCSprite *sp = CCSprite::create();
CCLabelTTF *pLabel = dynamic_cast(sp);
这时候 pLabel == nullptr.