zoukankan      html  css  js  c++  java
  • action(一)

        //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 中的回调函数,在游戏中,我们想在一个动作结束时得到一个反馈,我们就要用到这些函数。
  • 相关阅读:
    Constructor构造方法
    overload重载
    static关键字
    this关键字
    继承
    ORACLE数据库 常用命令和Sql常用语句
    常见单词
    L贪心基础
    J贪心
    K贪心
  • 原文地址:https://www.cnblogs.com/newlist/p/3202127.html
Copyright © 2011-2022 走看看