Cocos2d-x 例子TestCPP —记录1

来源:互联网 发布:windows双系统 虚拟机 编辑:程序博客网 时间:2024/06/05 23:58

1、CCSkewTo

一种倾斜的动作,关于X或Y轴的倾斜。

  CCActionInterval *actionTo = CCSkewTo::create(2, 37.2f, -37.2f);    CCActionInterval *actionBy = CCSkewBy::create(2, 0.0f, -90.0f);
static CCSkewTo* create(float t, float sx, float sy);

2、自定义路线CCCatmullRomTo和CCCatmullRomBy

 CCSize s = CCDirector::sharedDirector()->getWinSize();        CCPointArray *array = CCPointArray::create(20);        array->addControlPoint(ccp(0, 0));    array->addControlPoint(ccp(s.width/2-30,0));    array->addControlPoint(ccp(s.width/2-30,s.height-80));    array->addControlPoint(ccp(0, s.height-80));    array->addControlPoint(ccp(0, 0));          //    // sprite 1 (By)    //    // Spline with no tension (tension==0)    //        //其中第三个参数为惯性    CCCatmullRomBy *action = (CCCatmullRomBy*)CCCardinalSplineBy::create(3, array, 0);    CCCatmullRomBy* reverse = (CCCatmullRomBy*)action->reverse();        CCSequence *seq = CCSequence::create(action, reverse, NULL);        m_tamara->setPosition(ccp(50,50));    m_tamara->runAction(seq);
3、贝塞尔曲线CCBezierTo和CCBezierBy,至于不懂贝塞尔曲线绘制方法的同学(其实一开始我也不懂),可以去维基百科搜下,有详细的绘制方法。

例子中的相关代码:

    // sprite 1    ccBezierConfig bezier;    bezier.controlPoint_1 = ccp(0, s.height/2);    bezier.controlPoint_2 = ccp(300, -s.height/2);    bezier.endPosition = ccp(300,100);    CCActionInterval*  bezierForward = CCBezierBy::create(3, bezier);    CCActionInterval*  bezierBack = bezierForward->reverse();        CCAction*  rep = CCRepeatForever::create(CCSequence::create( bezierForward, bezierBack, NULL));    // sprite 2    m_tamara->setPosition(ccp(80,160));    ccBezierConfig bezier2;    bezier2.controlPoint_1 = ccp(100, s.height/2);    bezier2.controlPoint_2 = ccp(200, -s.height/2);    bezier2.endPosition = ccp(240,160);    CCActionInterval*  bezierTo1 = CCBezierTo::create(2, bezier2);        // sprite 3    m_kathia->setPosition(ccp(400,160));    CCActionInterval*  bezierTo2 = CCBezierTo::create(2, bezier2);    m_grossini->runAction( rep);    m_tamara->runAction(bezierTo1);    m_kathia->runAction(bezierTo2);