cocos2d-x 3.1.1 学习笔记[3]Action 动作

这些动画貌似都非常多的样子,就所有都创建一次。

代码例如以下:

    /* 动画*/
    auto sp = Sprite::create("card_bg_big_26.jpg");
    Size size = Director::getInstance()->getWinSize();
    sp->setScale(0.2);
    sp->setPosition(Vec2(size.width / 2 + 200, size.height / 2 + 200));
    sp->setAnchorPoint(Vec2(0.5, 0.5));
    addChild(sp);

    /*
     * 一般函数都会有xxxTo 和 xxxBy两个方法。
     * By方法一般和To方法的作用是一样的。仅仅是By方法能够获得该方法的反向动作。

e.g:moveBy->reverse();
     * 动画里面的duration都是表示动画要运行的时间
    */

    /**
     * MoveTo::create(float duration, const cocos2d::Vec2 &position);
     * position : 要移动到的位置
     */
    auto a1 = MoveTo::create(2, Vec2(100, 100));//在规定时间内移动到指定的坐标

    /**
     * JumpTo::create(float duration, const cocos2d::Vec2 &position, float height, int jumps);
     * position : 要跳到的位置
     * height : 每次跳的高度
     * jumps: 要跳的次数
     */
    auto a2= JumpTo::create(3, Vec2(0, 0), 30, 6);//跳6下后跳到指定的坐标

    /**
     * 两秒内放大到1
     * ScaleTo::create(float duration, float s)
     * s: 要缩放的倍数
     */
    auto a3 = ScaleTo::create(2, 1);

    /**
     * 淡入。改变的是opacity这个属性的值。0(看不见)-100(全然看的见)
     * FadeIn::create(float d)
     * d : 淡入的时间
     */
    auto a4 = FadeIn::create(2);

    /**
     * 淡出,改变的是opacity这个属性的值。

0(看不见)-100(全然看的见)
     * FadeOut::create(float d)
     * d : 淡出的时间
     */
    auto a5 = FadeOut::create(2);//2秒淡出

    /**
     * CardinalSplineTo就好像是运行了多个moveto函数
     * CardinalSplineTo::create(float duration, cocos2d::PointArray *points, float tension)
     * points: 须要经过的点
     * tension: 张力(张力大的话会有回力)
     */
    PointArray* arr = PointArray::create(20);
    arr->addControlPoint(Vec2(0, 0));
    arr->addControlPoint(Vec2(600, 700));
    arr->addControlPoint(Vec2(200,200));
    arr->addControlPoint(Vec2(55, 55));
    auto a6 = CardinalSplineTo::create(5, arr, 20);//相当于多个moveto,20是张力。张力大的话会有回力。

    /**
     * 旋转一个精灵的角度
     * RotateTo::create(float duration, float deltaAngle)
     * deltaAngel: 须要旋转的顺时针角度
     */
    auto a7 = RotateTo::create(2, 50);

    /**
     * 倾斜一个精灵的
     * SkewTo::create(float t, float sx, float sy);
     * sx: x轴倾斜的角度
     * sy: y轴倾斜的角度
     */
    auto a8 = SkewTo::create(3, 20, 1);

    /**
     * 贝塞尔曲线运动
     * BezierTo::create(float t, const ccBezierConfig &c)
     * c: 贝塞尔參数
     */
    ccBezierConfig bezierCon;
    bezierCon.controlPoint_1 = Vec2(100, 100);
    bezierCon.controlPoint_2 = Vec2(200, 200);
    bezierCon.endPosition = Vec2(300, 600);
    auto a9 = BezierTo::create(5, bezierCon);

    /**
     * 色彩变幻动作,颜色成分为(0-255),设置(255,255。255)为原画
     * TintBy::create(float duration, GLshort deltaRed, GLshort deltaGreen, GLshort deltaBlue)
     * deltaRed: 红色成分
     * deltaGreen: 绿色成分
     * deltaBlue: 蓝色成分
     */
    auto a10 = TintBy::create(1, 155, 155, 155);

    /**
     * 让一个精灵在规定的时间内闪烁数次
     * Blink::create(float duration, int blinks)
     * blinks: 闪烁的次数
     */
    auto a11 = Blink::create(1, 5);

    /**
     * 延迟五秒钟,一般用于动画连续播出的时候,歇息五秒钟。在播放下一个动画。
     * DelayTime::create(float d)
     * d: 须要延迟的时间
     */
    auto a12 = DelayTime::create(5);

    /**
     * 创建一个球面坐标轨迹进行旋转的动作
     * OrbitCamera::create(float t, float radius, float deltaRadius, float angleZ, float deltaAngleZ, float angleX, float deltaAngleX)
     * radius: 起始半径
     * deltaRadius: 半径差
     * angelZ: 起始z角
     * deltaAngleZ: 旋转z角差
     * angleX: 起始x角
     * deltaAngleX: 旋转x角的差
     */
    auto a13 = OrbitCamera::create(5, 10, 0, 45, 180, 90, 0);

    /**
     * 创建一个尾随动作
     * Follow::create(cocos2d::Node *followedNode)
     * followedNode: 须要尾随的节点
     */
    auto a14 = Follow::create(sp);

    /**
     * 让目标动作赋予反弹力,在目标动作过程中会反弹,结束点不反弹。
     * EaseBounceIn::create(cocos2d::ActionInterval *action)
     * action: 目标动作
     */
    auto a15 = EaseBounceIn::create(a1);

    /**
     * 让目标动作赋予反弹力。且以目标动作结束位子開始反弹。(这个效果相比于In要更像反弹力)
     * EaseBounceOut::create(cocos2d::ActionInterval *action)
     * action: 目标动作
     */
    auto a16 = EaseBounceOut::create(a1);

    /**
     * 让目标动作赋予反弹力,结合EaseBounceIn和EaseBounceOut,在过程和结束点都反弹。
     * EaseBounceInOut::create(cocos2d::ActionInterval *action)
     * action: 目标动作
     */
    auto a17 = EaseBounceInOut::create(a1);

    /**
     * 让目标动作赋予回力(方向与要移动方向相反)(在动作開始之前)
     * EaseBackIn::create(cocos2d::ActionInterval *action)
     * action: 目标动作
     */
    auto a18 = EaseBackIn::create(a1);

    /**
     * 让目标动作赋予回力 (方向与要移动方向同样)(在动作结束时)
     * EaseBackOut::create(cocos2d::ActionInterval *action)
     * action: 目标动作
     */
    auto a19 = EaseBackOut::create(a1);

    /**
     * 让目标动作赋予回力 结合EaseBackIn和EaseBackOut
     * EaseBackInOut::create(cocos2d::ActionInterval *action)
     * action: 目标动作
     */
    auto a20 = EaseBackInOut::create(a1);

    /**
     * 赋予动作弹性(移动过程中展示)
     * EaseElasticIn::create(cocos2d::ActionInterval *action, float period)
     * action: 目标动作
     * period: 频率。弹性展示的频率。period秒运行一次弹性效果
     */
    auto a21 = EaseElasticIn::create(a1, 0);
    a21 = EaseElasticIn::create(a1);//也能够不填写period函数创建

    /**
     * 赋予动作弹性(移动结束展示)
     * EaseElasticOut::create(cocos2d::ActionInterval *action, float period)
     * action: 目标动作
     * period: 频率,弹性展示的频率,period秒运行一次弹性效果
     */
    auto a22 = EaseElasticOut::create(a1, 1);
    a22 = EaseElasticOut::create(a1);//也能够不填写period函数创建

    /**
     * 赋予动作弹性 过程中和结束的时候 EaseElasticIn + EaseElasticOut
     * EaseElasticInOut::create(cocos2d::ActionInterval *action, float period)
     * action: 目标动作
     * period: 频率,弹性展示的频率,period秒运行一次弹性效果
     */
    auto a23 = EaseElasticInOut::create(a1, 1);
    a23 = EaseElasticInOut::create(a1);//也能够不填写period函数创建

    /**
     * 让目标动作缓慢開始
     * EaseExponentialIn::create(cocos2d::ActionInterval *action)
     * action: 目标动作
     */
    auto a24 = EaseExponentialIn::create(a1);

    /**
     * 让目标动作缓慢结束
     * EaseExponentialOut::create(cocos2d::ActionInterval *action)
     * action: 目标动作
     */
    auto a25 = EaseExponentialOut::create(a1);

    /**
     * 让目标动作缓慢開始和结束
     * EaseExponentialInOut::create(cocos2d::ActionInterval *action)
     * action: 目标动作
     */
    auto a26 = EaseExponentialInOut::create(a1);

    /**
     * 让目标动作运行速度加倍
     * Speed::create(cocos2d::ActionInterval *action, float speed)
     * speed: 倍数
     */
    auto a27 = Speed::create(a1, 20);

    /**
     * 让多个动画同一时候运行
     * Spawn::create(cocos2d::FiniteTimeAction *action1, ..., NULL)
     * action: 动作
     */
    auto a28 = Spawn::create(a1, a2, NULL);

    /**
     * 让多个动画按顺序运行
     * Sequence::create(cocos2d::FiniteTimeAction *action1, ..., NULL)
     * action: 动作
     */
    auto a29 = Sequence::create(a1, a2, NULL);

    /**
     * 让一个动画运行多次
     * Repeat::create(cocos2d::FiniteTimeAction *action, unsigned int times)
     * action: 动作
     * times: 反复动作次数
     */
    auto a30 = Repeat::create(a11, 2);

    /**
     * 对目标动作进行永久性的反复运动
     * RepeatForever::create(cocos2d::ActionInterval *action)
     * action: 动作
     */
    auto a31 = RepeatForever::create(a11);

    /*
     CC_CALLBACK_ 的宏定义中后面的 0 1 2 3分别表示的是 不事先指定回调函数參数的个数。
     比如说 CC_CALLBACK_ 1 表示的是。回调函数中不事先指定參数是一个,而事先指定的回调函数的參数 能够随意多个。
     */
    sp->setTag(5201314);
    //创建一个无參回调函数
    auto callFunc = CallFunc::create(CC_CALLBACK_0(HelloWorld::noParam, this));
    //创建仅仅有一个參数的回调函数。

(使用默认回调函数)
    auto callFuncN = CallFuncN::create(CC_CALLBACK_1(HelloWorld::oneParam, this));
    //创建仅仅有一个參数的回调函数。(使用自己定义參数)
    auto callFuncNSelf = CallFuncN::create(CC_CALLBACK_0(HelloWorld::oneParamBySelf, this,998));
    //创建一个有两个參数的回调函数
    auto callFuncND = CallFuncN::create(CC_CALLBACK_1(HelloWorld::twoParam, this, 6));

    sp->runAction(callFuncND);

上面最后回调用到的函数:

void HelloWorld::noParam()
{
    log("no param");
}
void HelloWorld::oneParamBySelf(int num)
{
    log("one param one is %d", num);
}
void HelloWorld::oneParam(Node* node)
{
    //传进来的是运动的那个Node
    log("one :%d",node->getTag());
}
void HelloWorld::twoParam(Node* node,int sec)
{
    log("sec : %d", (int)sec);
}
时间: 2024-10-06 02:45:11

cocos2d-x 3.1.1 学习笔记[3]Action 动作的相关文章

cocos2d-x 3.1.1 学习笔记[21]cocos2d-x 创建过程

文章出自于  http://blog.csdn.net/zhouyunxuan RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIViewController { } - (BOOL) prefersStatusBarHidden; @end RootViewController.cpp #import "RootViewController.h" #import &

[XMPP]iOS聊天软件学习笔记[三]

今天做了好友界面,其实xmpp内部已经写好很多扩展模块,所以使用起来还是很方便的 开发时间:五天(工作时间) 开发工具:xcode6 开发平台:iOS8 XMPP框架:XMPPFramework git clone https://github.com/robbiehanson/XMPPFramework.git 界面设计:使用StoryBoard github地址:https://github.com/hjandyz/XMPP 1.每一个模块创建以后都需要激活,比如自动连接模块 //自动连接模

[XMPP]iOS聊天软件学习笔记[四]

昨天完成了聊天界面,基本功能算告一段落 开发时间:五天(工作时间) 开发工具:xcode6 开发平台:iOS8 XMPP框架:XMPPFramework git clone https://github.com/robbiehanson/XMPPFramework.git 界面设计:使用StoryBoard github地址:https://github.com/hjandyz/XMPP 1.关于socket在后台的运行,iOS8可以直接使用(但是我自由在模拟器成功,真机不知为何不可以),ios

cocos2d-x 3.1.1 学习笔记[17] 关于函数的那些勾当

对于cocos2d-x经常要用到的方法,不得不好好研究一下,这次的研究真心有收获. 首先定义一个精灵,实现一连串连续的动作. 为了动作能够回调我们的函数,我们必须先声明并实现他们. void callBack(); void callBack_1(Node* node); void callBack_2(Node* node,const char* str); void Nice::callBack() { log("Nice::callBack()"); } void Nice::c

【web开发学习笔记】Structs2 Action学习笔记(三)action通配符的使用

action学习笔记3-有关于通配符的讨论 使用通配符,将配置量降到最低,不过,一定要遵守"约定优于配置"的原则. 一:前端htm <前端代码html> </head> <body> <a href="<%=context %>/actions/Studentadd">添加学生</a> <a href="<%=context %>/actions/Studentdel

struts2学习笔记(4)---------action中的方法调用

系统需要使用Action的不同方法来处理用户请求,这就需要让同一个Action里面包含多个控制处理逻辑. 1)动态方法调用 即DMI(dynamic method invocation),使用actionName!methodName的形式来指定想要调用的方法,如果想使用DMI,需要在struts.xml里面加入这句话: <constant name="struts.enable.DynamicMethodInvocation" value="true" /&

Cocos2d-x 3.2 学习笔记(八)Action

Action -动作.所有精灵的表现,人机交互的表现,都是动作.cocos2dx 里面封装的动作可谓是丰富! Action有三个子类 1.FiniteTimeAction类是所有在有限时间能够完成的动作(action)的基类. 2.Follow是一种“跟随”某一个节点的动作. 3.Speed类改变一个action的运行速度,使他持续更长时间 (speed>1)或者更短的时间(speed<1).(Speed对象不能作为一个动作序列的一部分, 因为它不是一个ActionInterval对象) 其次

python数据分析入门笔记[1]

1.Numpy: Numpy是python科学计算的基础包,它提供以下功能(不限于此): (1)快速高效的多维数组对象naarray (2)用于对数组执行元素级计算以及直接对数组执行数学运算的函数 (3)用于读写硬盘上基于数组的数据集的工具 (4)线性代数运算.傅里叶变换,以及随机数生成 (5)用于将C.C++.Fortran代码集成到python的工具 2.pandas pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数.pandas兼具Numpy高性能的数组计算功能以及

Cocos2d-x学习笔记(十一)瞬时动作

动作类Action是一切动作的祖先类.它有三个直接继承子类: FiniteTimeAction受时间限制的动作: Follow精灵跟随精灵的动作: Speed运动速度控制: 而FiniteTimeAction又有两个直接子类:分别是ActionInstant和ActionInterval,顾类名而思意. 瞬时动作即立即执行动作,下边是其使用示例: void MyAction::goMenu(cocos2d::Ref *pSender) { log("Tag = %i", this-&g