Cocos2d-x-v3动作体系

简介:

Cocos2d-x-v3动作体系

        cocos2d-x-v3版本v2的版本有的很大的改动,最直观的是在一些函数的改动和类名的改动上,首先以CC开头的类,都不再使用CC。在我个人的理解上,原来的cocos2d-x是完全从iphone的框架cocos2d移植过来的,代码的风格和编程的思想都及类似于Object-C,除了语法是C++的外,其他就像是OC版的翻译,新的版本更好的体现了跨平台的特性,也更多的运用了C++的一些编码思想和语言特点,更易于各平台的开发者使用。这篇博客的主要内容,是总结cocos2d中行为动作的处理方法和相关函数。

一、瞬时动作

        这类行为只能称为动作,不能称作动画,其执行是瞬时的,没有可是化的过程。

        cocos2d中常用的瞬时动作有如下几种:

      FlipX:关于x轴做镜像变换。

      FlipY:关于y轴做镜像变换。

      Hide:隐藏。

      Show:显示。

      ToggleVisibility:切换隐藏和显示。

      Place:将对象放置在某个位置。

二、延时动作

       延时动作就是动画,将动作的过程展现出来,cocos2d引擎中的几种延时动作如下:

       1. MoveTo:将对象移动到某一位置,是绝对位置,移动后不会记录对象的原始位置,动作不能进行反转。例如

?
1
2
auto  action = MoveTo::create(2, Vec2(100, 100)); //2S时间移动到(100,100)
     label->runAction(action); //执行动作

        2.MoveBy:将对象相对现在的位置移动某个距离,这个移动是相对对象当前位置的,可以反转。

      3.JumpTo:和MoveTo类似,对象跳动到某一位置,例如:

?
1
label->runAction(JumpTo::create(2, Vec2(100, 100), 30, 3)); //对象在2S内跳三次,每次高度为30像素,跳到(100,100)点

       4.JumpBy:和MoveBy类似。

        5.BezierTo:以贝塞尔曲线的方式移动到某一位置,例如:

?
1
2
3
4
5
6
ccBezierConfig config;
     config.controlPoint_1=Vec2(300, 300);
     config.controlPoint_2=Vec2(200,200);
     config.endPosition=Vec2(100, 100); //设置两个中间点和一个终点
     
     label->runAction(BezierTo::create(2, config)); //2S时间通过贝塞尔曲线方式移动

        6.BezierBy:以贝塞尔曲线的方式进行相对移动。

      7.ScaleTo:相对原始大小缩放到某一尺度。

      8.ScaleBy:相对目前大小进行缩放。

      9.RotateTo:相对原始状态旋转到某一角度。

      10.RotateBy:相对目前转台旋转某个角度。

      11.Blink:闪烁动画。

      12.TintTo:颜色转化到某一色值

      13.TintBy:相对目前色值,颜色相对转变某一色值。

      14.FadeTo:变暗到某一透明度

      15.FadeIn:淡入动作

      16.FadeOut:淡出动作

三、动作的组合方式

        cocos2d中不仅为我们提供的各种动作方式,也为我们提供了相关的类用于管理这些动作:

     1.动作序列Sequence:这个类可以创建一个动作序列,按序列中动作的顺序依次执行动作,如下:

?
1
2
  Sequence * sq= Sequence::create(TintTo::create(2, Color3B(123, 123, 123)),RotateTo::create(2, 30), NULL);
     label->runAction(sq); //创建动作序列,使对象执行先变颜色,在旋转的动画

      2.同步动作组Spawn:这个类和Sequence类似,只是他里面的动画会同时一起执行。

    3.有限次的循环动作Repeat:这个类可以使某一动作循环执行数次,例如:

?
1
2
Repeat * re = Repeat::create(RotateBy::create(2, 30), 5); //旋转5次30度
     label->runAction(re);

    4.无限次循环动作RepeatForever:

?
1
2
RepeatForever *  ref  = RepeatForever::create(RotateBy::create(2, 30));
     label->runAction( ref );

    5.帧动画

cocos2d中同样提供了对帧动画的支持:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    //创建设置精灵
     Sprite * spr = Sprite::create(  "CloseNormal.png" );
     spr->setPosition(Vec2(100, 100));
     //创建两帧精灵图片
     SpriteFrame * frame1 = SpriteFrame::create( "CloseNormal.png" , Rect(0, 0, 50, 50));
     SpriteFrame * frame2 = SpriteFrame::create( "CloseSelected.png" , Rect(0, 0, 50, 50));
     Vector<SpriteFrame *>  arr;
     arr.pushBack(frame1);
     arr.pushBack(frame2);
     //创建动画体 第一个参数是帧容器,第二个是每一帧的播放时间,第三个是循环次数
     Animation * ani = Animation::createWithSpriteFrames(arr, 1, 1);
     //创建动作
     Animate *ant = Animate::create(ani);
     RepeatForever *  ref  = RepeatForever::create(ant);
     spr->runAction( ref );
     this ->addChild(spr);

    6.反转动画

可以通过reverse方法获取动作的反转动作,例如:

?
1
2
3
4
5
auto  label = Label::createWithTTF( "Hello World" "fonts/arial.ttf" , 24);
     MoveBy * move = MoveBy::create(3, Vec2(100, 100));
     Sequence * sq = Sequence::create(move,move->reverse(), NULL);
     label->runAction(sq);
     //label 会先相对移动(100,100),再反移动回来

    7.动作的速度控制

通过一些速度相关的类,cocos2d可以很轻松的创建出各种线性与非线性的动作。例如:

?
1
2
3
4
5
auto  label = Label::createWithTTF( "Hello World" "fonts/arial.ttf" , 24);
     MoveTo * move = MoveTo::create(3, Vec2(-200, -200));
     EaseIn* an = EaseIn::create(move, 5);
     label->runAction(an);
//label的运动会先慢后快,速度差为5倍

EaseIn:由慢变快,线性

EaseOut:由快变慢,线性

EaseInOut:由慢变快再由快变慢

EaseSineIn:由慢变快,正弦规律

EaseSineOut:由快变慢,正弦规律

EaseSineInOut:由慢变快再由快变慢,正弦规律

EaseExponentialIn:由慢变快,指数规律

EaseExponentialOut:由快变慢,指数规律

EaseExponentialInOut:由慢变快再由快变慢,指数规律

目录
相关文章
|
11月前
|
IDE 开发工具 开发者
手把手教你安装PyCharm 2025:开发者的Python IDE配置全流程+避坑指南
本教程详细介绍了PyCharm 2025版本在Windows系统下的安装流程及配置方法,涵盖AI代码补全与智能调试工具链等新功能。内容包括系统要求、安装步骤、首次运行配置(如主题选择与插件安装)、创建首个Python项目,以及常见问题解决方法。此外,还提供了切换中文界面和延伸学习资源的指导,帮助用户快速上手并高效使用PyCharm进行开发。
5332 61
|
12月前
|
人工智能 自然语言处理 安全
探秘能源行业AI密码:云鼎科技用大模型实现了″四个转变″
大模型正全面赋能流程工业与智能制造。以煤矿行业为例,云鼎科技自2022年起探索大模型应用,从验证到研发再到推广,构建了“1+4+N”智能化方案,实现115类场景落地,并拓展至化工、电力等领域。大模型带来“四个改变”:由被动监管转向本质安全、劳动密集转向精简高效、粗放管理转向质量效益、分散重复转向集约高效。实际成效显著,如兴隆庄煤矿减少岗位人员39人,济宁二号井煤矿每年增利400多万。云鼎科技还基于DeepSeek等模型打造垂域矿山大模型,推动全产业智能化升级,助力企业轻松算清经济账,吸引更多企业拥抱大模型浪潮。
236 0
|
人工智能 自然语言处理 语音技术
《AI赋能鸿蒙Next:为特殊人群打造无障碍交互新体验》
在科技飞速发展的今天,鸿蒙Next设备借助人工智能技术,显著提升了特殊人群的无障碍交互体验。针对视障人群,提供精准屏幕朗读、视觉辅助智能问答和导航避障辅助;面向听障人群,实现AI声音修复、实时字幕与语音转文字;助力语言障碍者和老年人群体,通过AI优化交流与操作体验。开发者可利用鸿蒙Next的AI能力,深入了解用户需求,进行测试与优化,共同创造友好、便捷的无障碍环境,让特殊人群更好地融入数字社会,享受科技带来的美好生活。
662 8
|
机器学习/深度学习 数据采集 人工智能
《大模型训练成本高,如何在不牺牲性能的前提下破局》
在人工智能领域,大模型训练成本高昂,主要源于硬件设备、数据处理和算法优化的需求。降低训练成本的关键在于合理配置硬件资源、改进数据处理方法、优化算法和模型结构,以及采用分布式训练技术。通过这些措施,企业可以在不影响模型性能的前提下,显著减少计算资源、人力和时间的投入,实现更高效的模型训练。实践证明,综合运用这些方法能够有效降低成本,推动人工智能技术的可持续发展。
937 18
|
机器学习/深度学习 编解码 人工智能
论文精读 TransGAN:两个纯粹的Transformer可以组成一个强大的GAN(TransGAN:Two Pure Transformers Can Make One Strong GAN)
TransGAN是UT-Austin、加州大学、 IBM研究院的华人博士生构建了一个只使用纯 transformer 架构、完全没有卷积的 GAN,并将其命名为 TransGAN。该论文已被NeruIPS(Conference and Workshop on Neural Information Processing Systems,计算机人工智能领域A类会议)录用,文章发表于2021年12月。 该文章旨在仅使用Transformer网络设计GAN。Can we build a strong GAN completely free of convolutions? 论文地址:https://
论文精读 TransGAN:两个纯粹的Transformer可以组成一个强大的GAN(TransGAN:Two Pure Transformers Can Make One Strong GAN)
文件系统之软连接、硬链接的区别/文件删除与空间的联系/df和du的区别
文件系统之软连接、硬链接的区别/文件删除与空间的联系/df和du的区别
|
Ubuntu Linux 虚拟化
嵌入式Linux系列第1篇:开发环境搭建
Ublox ZED-F9P 厘米级定位模组开箱评估
|
机器学习/深度学习 算法 搜索推荐
打击黑灰产的利器 —— 图神经网络(GNN)
阿里巴巴安全部数据与算法团队一直致力于与黑灰产进行对抗,保障用户在淘宝、天猫、闲鱼等平台上的使用体验和切身利益。面对狡猾的黑灰产,我们研究出了一系列算法武器,图神经网络(GNN)是其中重要的防控技术。本文结合阿里开源GNN框架Graph-Learn(https://github.com/alibaba/graph-learn)进行介绍。
4364 1
打击黑灰产的利器 —— 图神经网络(GNN)
|
安全 存储 监控
日志服务数据加工:错误排查指南
日志服务数据加工:错误排查指南, 覆盖数据加工各个环节的错误与排查实践
9542 0

热门文章

最新文章