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

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);
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115397.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月5日 上午6:00
下一篇 2022年2月5日 上午6:00


相关推荐

  • Spinnaker简介

    Spinnaker简介Spinnaker 项目页面 https www spinnaker io 源代码 https github com spinnaker spinnaker 遵循 Apache2 0 许可协议 Spinnaker 来自 Netflix 它更侧重于持续部署而不是持续集成 它可以与其他工具集成 包括 Travis 和 Jenkins 以启动测试和部署管道 它还集成了 Prometheus 和 Datadog 等监控工具 根据这些系统提供的指标可以进行部署决策 例如 金丝雀部署使用判断的概念和收

    2026年3月20日
    2
  • git初次登陆使用

    git初次登陆使用git初次登陆使用一.安装git二.在当前项目根目录点击鼠标右键,出来下图:点击进入git命令行界面。三.初始化项目四.添加所有文件到项目中五.尝试提交所有文件我由于是第一次连接

    2022年7月3日
    27
  • python生成13位时间戳_python精确到毫秒时间戳

    python生成13位时间戳_python精确到毫秒时间戳Unix时间戳根据精度的不同,有10位(秒级),13位(毫秒级),16位(微妙级)和19位(纳秒级)。平时我们在linux命令行下,使用date+%s返回的是一个10位的unix时间,而在常用的http的响应头里,我们经常会发现有13位的unix时间戳。在python下可以比较容易的获取10和13位的时间戳并转换成常见的时间格式。一、10时间戳的使用和转换>>>…

    2022年10月2日
    2
  • html播放rtsp流,浏览器播放rtsp视频流解决方案

    html播放rtsp流,浏览器播放rtsp视频流解决方案最近项目中需要实时播放摄像头rtsp视频流,于是就专门做了些研究。而浏览器不能直接播放,只有通过插件或者转码来实现这个需求。要实现这个目的,可以采用的方案非常得多,有商业的也有开源的,这里主要列举一些开源的方案。这里的方案都是我尝试过了的,有些成功,有些没成功。但是因为每个项目情况不同,这次没成的方法,换个项目也许就能成。方案一:html5+websocket_rtsp_proxy实现视频…

    2022年10月17日
    4
  • docker搭建kafka集群

    docker搭建kafka集群docker搭建kafka集群我在M1mbp上使用的以下镜像新建文件zk-kafka-docker-compose.ymlversion:”2″services:zookeeper:user:rootimage:docker.io/zookeeperports:-“12181:2181″environment:-ALLOW_ANONYMOUS_LOGIN=yesvolumes:-zoo

    2022年4月25日
    36
  • Bootstrap从入门到精通(全)

    Bootstrap从入门到精通(全)目录前言 1 下载安装 2 布局容器和栅格网格系统 2 1 布局容器 2 2 栅格网格系统 3 常用样式前言在了解这篇文章的时候需要提前知道这些知识点可看我之前的文章 html 从入门到精通 全 css 属性从入门到精通 全 JavaScript 从入门到精通 全 这篇文章的学习主要通过 2021 最新完整版 Bootstrap 教程 最给力的前端框架 bootstrap 框架讲解 快速上手 最适合后端开发人员的 bootstrap 保姆级使用教程关于 Bootstrap 的主要作用是 套现成的 CSS 样

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号