当前位置: 首页 > news >正文

cocos2d-x基础三 播放动画

1. 加载一张纹理,创建CCTexture2D,并在这张纹理上划分出多个CCSpriteFrame:
    CCTexture2D *texture = CCTextureCache::sharedTextureCache()->addImage("animations/dragon_animation.png");
    
    // manually add frames to the frame cache
    CCSpriteFrame *frame0 = CCSpriteFrame::frameWithTexture(texture, CCRectMake(132*0, 132*0, 132, 132));
    CCSpriteFrame *frame1 = CCSpriteFrame::frameWithTexture(texture, CCRectMake(132*1, 132*0, 132, 132));
    CCSpriteFrame *frame2 = CCSpriteFrame::frameWithTexture(texture, CCRectMake(132*2, 132*0, 132, 132));
    CCSpriteFrame *frame3 = CCSpriteFrame::frameWithTexture(texture, CCRectMake(132*3, 132*0, 132, 132));
    CCSpriteFrame *frame4 = CCSpriteFrame::frameWithTexture(texture, CCRectMake(132*0, 132*1, 132, 132));
    CCSpriteFrame *frame5 = CCSpriteFrame::frameWithTexture(texture, CCRectMake(132*1, 132*1, 132, 132));


2. 通过上面的CCSpriteFrame创建出一个CCAnimation。

    CCMutableArray<CCSpriteFrame*> *animFrames = new CCMutableArray<CCSpriteFrame*>(6);
    animFrames->addObject(frame0);
    animFrames->addObject(frame1);
    animFrames->addObject(frame2);
    animFrames->addObject(frame3);
    animFrames->addObject(frame4);
    animFrames->addObject(frame5);
            
    CCAnimation *animation = CCAnimation::animationWithFrames(animFrames, 0.2f);

3. 但是cocos2d的CCAnimation不是一个可以用来显示的类型,它只负责记录动画帧、帧间隔等数据,要让它动起来,需要借助CCAnimate,它是一种Action。

    CCAnimate *animate = CCAnimate::actionWithAnimation(animation, false);


4. 最后,要在屏幕上显示出动画,需要创建一个CCSprite实例,然后让它循环播放上面的CCAnimate动作。注意,必须用CCRepeatForever::actionWithAction来包装animate,否则动画只播放一次就停下了。

    CCSprite* sprite = CCSprite::spriteWithSpriteFrame(frame0);
    sprite->setPosition( ccp( s.width/2-80, s.height/2) );
    layer->addChild(sprite);//把sprite添加到CCLayer上,才能显示
  sprite->runAction(CCRepeatForever::actionWithAction( animate) );





相关文章:

  • 在SVN中偷偷发个LGame的C# Beta版(意味着支持WP7和XBOX之类了)
  • C#实现WORD文档的内容复制和替换
  • Java与C#开发上的一些差异与转换方法
  • 浅谈我心中的软件开发
  • 十三款著名跨平台游戏引擎(原文翻译部分转自游侠网)
  • 发个XNA中文字体生成的辅助小工具
  • 教你如何迅速秒杀99%的海量数据处理面试题
  • Android开发性能提升
  • Java游戏源码大礼包(清明有爱强化版)
  • 浅谈STG游戏的开发(4月8日更新,已补全内容)
  • J2me游戏引擎的基本构成
  • 感知世界触景生情——增强现实技术
  • Android游戏源码合集(主要是AndEngine和Libgdx的)
  • 继续群发Android游戏源码(再发15款)
  • (NSDate) 时间 (time )比较
  • JS 中的深拷贝与浅拷贝
  • 【刷算法】求1+2+3+...+n
  • canvas 高仿 Apple Watch 表盘
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • js中forEach回调同异步问题
  • Lucene解析 - 基本概念
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • OSS Web直传 (文件图片)
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 三分钟教你同步 Visual Studio Code 设置
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 小程序测试方案初探
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 写代码的正确姿势
  • MPAndroidChart 教程:Y轴 YAxis
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​业务双活的数据切换思路设计(下)
  • ###C语言程序设计-----C语言学习(3)#
  • (1) caustics\
  • (3)(3.5) 遥测无线电区域条例
  • (第27天)Oracle 数据泵转换分区表
  • (原)本想说脏话,奈何已放下
  • (转)nsfocus-绿盟科技笔试题目
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Core跨平台微服务学习资源
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET delegate 委托 、 Event 事件
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net Signalr 使用笔记
  • .net Stream篇(六)
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET连接数据库方式
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @Transaction注解失效的几种场景(附有示例代码)