newlist

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
    //CCAnimation是封装动画功能的类,它可以看作是由若干个_CCSpriteFrame对象组成的序列,精灵按照顺序切换它们,就形成了动画。CCAnimation也有内存池,
    //此处的animationName就是key,内存池通过它找到CCAnimation对象,再通过索引frameIndex找到动画序列中的某一帧,将该帧设为精灵的当前显示帧。

CCAnimation* animation = CCAnimation::create(); for( int i=1;i<15;i++) { char szName[100] = {0}; sprintf(szName, "Images/grossini_dance_%02d.png", i); animation->addSpriteFrameWithFileName(szName); } // should last 2.8 seconds. And there are 14 frames. animation->setDelayPerUnit(2.8f / 14.0f); animation->setRestoreOriginalFrame(true); CCAnimate* action = CCAnimate::create(animation); m_grossini->runAction(CCSequence::create(action, action->reverse(), NULL));
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)
    //
/*这个类是样条曲线动作,其创建函数CCCardinalSplineBy::create(float duration, cocos2d::CCPointArray *points, float tension);中duration是时间间隔,
points是控制点列表,tension是松紧程度。tension==1时,样条线是分段直线。


tension<1向外松弛弯曲,tension>1向内缩紧弯曲。By动作是以当前坐标为新坐标原点。
*/ CCCardinalSplineBy
*action = CCCardinalSplineBy::create(3, array, 0); CCActionInterval *reverse = action->reverse(); CCFiniteTimeAction *seq = CCSequence::create(action, reverse, NULL); m_tamara->setPosition(ccp(50, 50)); m_tamara->runAction(seq); // // sprite 2 (By) // // Spline with high tension (tension==1) // CCCardinalSplineBy *action2 = CCCardinalSplineBy::create(3, array, 1); CCActionInterval *reverse2 = action2->reverse(); CCFiniteTimeAction *seq2 = CCSequence::create(action2, reverse2, NULL); m_kathia->setPosition(ccp(s.width/2, 50)); m_kathia->runAction(seq2);
CCCatmullRomTo *action2 = CCCatmullRomTo::create(3, array2);
CCCatmullRomBy *action3 = CCCatmullRomBy::create(3, array2);
CCCatmullRomTo::create 参数1:执行时间 参数2:点数组
CCCatmullRomBy::create 参数1:执行时间 参数2:点数组
大家看到了,这个云线呢,在拐弯处移动速度稍快哦。
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);
 CCBezierBy::create 参数1:执行时间 参数2:贝塞尔Config

    贝塞尔曲线的用途广泛,当然咯,我们的游戏中也不缺乏他的身影,这里重要的说下ccBezierConfig 。Cocos2D-X 中需要用到贝塞尔曲线的地方都有他的身影。其实,它也没有什么神秘的,只是一个拥有三个 CCpoint 的结构体,C2D-X 为了我们使用的方便提供了出来。
CCActionInterval*    action1 = CCBlink::create(2, 10);
    CCBlink::create 参数1:执行时间 参数2:闪烁次数

    这个就很简单了,像我们游戏中被攻击的时候,要闪一下就用他,很方便,很简单。    当然,效果也是很好的。
CCActionInterval*    action1 = CCFadeIn::create(1.0f); 
CCActionInterval*    action2 = CCFadeOut::create(1.0f);
     CCFadeIn::create 参数1:执行时间
    CCFadeOut::create 参数1:执行时间
CCActionInterval*    action1 = CCTintTo::create(2, 255, 0, 255);
CCActionInterval*    action2 = CCTintBy::create(2, -127, -255, -127);
    CCTintTo::create 参数1:时间 参数2:red值 参数3:green值 参数4:blue值
    CCTintBy::create 参数1:时间 参数2:red值 参数3:green值 参数4:blue值

    这里的By是在此基础之上变化。之前的都是在坐标上面变化,这个是在颜色上变化哦
Sequence of InstantActions:动作回调
CCFiniteTimeAction*    action = CCSequence::create(
                CCPlace::create(ccp(200,200)),
                CCShow::create(),
                CCMoveBy::create(1, ccp(100,0)),
                CCCallFunc::create(this, callfunc_selector(ActionSequence2::callback1)),
                CCCallFuncN::create(this, callfuncN_selector(ActionSequence2::callback2)),
                CCCallFuncND::create(this, callfuncND_selector(ActionSequence2::callback3), (void*)0xbebabeba),
                NULL);
 CCCallFunc::create 参数1:函数所在对象 参数2:selector包装函数
     CCCallFuncN::create 参数1:函数所在对象 参数2:selector包装函数
    CCCallFuncND::create 参数1:函数所在对象 参数2:selector包装函数
    参数3:自定义参数

    这里,我们第一次接触到了 Cocos2D-X 中的回调函数,在游戏中,我们想在一个动作结束时得到一个反馈,我们就要用到这些函数。

 

posted on 2013-07-20 11:13  一枚程序  阅读(766)  评论(0编辑  收藏  举报