`
473687880
  • 浏览: 522750 次
文章分类
社区版块
存档分类
最新评论

【玩转cocos2d-x之八】精灵类CCSprite

 
阅读更多

原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12747385


精灵类CCSprite可以说是游戏的主角了,也是我们平时最常用到的类。


1.概况


CCSprite本质上就是一个二维图片,是静态的。游戏中的动画只不过是让一张张静态图片快速更换达到的动态效果。CCSprite继承于CCNodeRGBA,并实现了CCTextureProtocol的接口。因此CCNodeRGBA所具有的RGB和透明值这些属性和接口CCSprite都有,而CCTextureProtocol是一个抽象类,定义了和纹理相关的两个标准接口:

  1. //返回当前使用的纹理
  2. virtualCCTexture2D*getTexture(void)=0;
  3. //设置一个新的纹理,它会被retain
  4. virtualvoidsetTexture(CCTexture2D*texture)=0;


2.常用接口

2.1.初始化

  1. //初始化函数
  2. virtualboolinit(void);
  3. //用CCTexture2D纹理来初始化,精灵大小即是纹理大小
  4. virtualboolinitWithTexture(CCTexture2D*pTexture);
  5. ///用CCTexture2D纹理和大小来初始化
  6. virtualboolinitWithTexture(CCTexture2D*pTexture,constCCRect&rect);
  7. //用CCTexture2D纹理,大小,旋转来初始化
  8. virtualboolinitWithTexture(CCTexture2D*pTexture,constCCRect&rect,boolrotated);
  9. //用CCSpriteFrame精灵帧来初始化
  10. virtualboolinitWithSpriteFrame(CCSpriteFrame*pSpriteFrame);
  11. //用CCSpriteFrame精灵帧名来初始化
  12. virtualboolinitWithSpriteFrameName(constchar*pszSpriteFrameName);
  13. //用外部文件初始化,外部文件会先被创建为纹理,再用纹理初始化精灵
  14. virtualboolinitWithFile(constchar*pszFilename);
  15. //用外部文件和大小来初始化
  16. virtualboolinitWithFile(constchar*pszFilename,constCCRect&rect);

2.2.继承自CCTextureProtocol

  1. //设置/获取纹理
  2. virtualvoidsetTexture(CCTexture2D*texture);
  3. virtualCCTexture2D*getTexture(void);
  4. //设置/获取颜色描绘时混合方案
  5. voidsetBlendFunc(ccBlendFuncblendFunc);
  6. ccBlendFuncgetBlendFunc(void);

2.3.继承自CCNode

参见CCNode。

  1. virtualvoidsetScaleX(floatfScaleX);
  2. virtualvoidsetScaleY(floatfScaleY);
  3. virtualvoidsetPosition(constCCPoint&pos);
  4. virtualvoidsetRotation(floatfRotation);
  5. virtualvoidsetRotationX(floatfRotationX);
  6. virtualvoidsetRotationY(floatfRotationY);
  7. virtualvoidsetSkewX(floatsx);
  8. virtualvoidsetSkewY(floatsy);
  9. virtualvoidremoveChild(CCNode*pChild,boolbCleanup);
  10. virtualvoidremoveAllChildrenWithCleanup(boolbCleanup);
  11. virtualvoidreorderChild(CCNode*pChild,intzOrder);
  12. virtualvoidaddChild(CCNode*pChild);
  13. virtualvoidaddChild(CCNode*pChild,intzOrder);
  14. virtualvoidaddChild(CCNode*pChild,intzOrder,inttag);
  15. virtualvoidsortAllChildren();
  16. virtualvoidsetScale(floatfScale);
  17. virtualvoidsetVertexZ(floatfVertexZ);
  18. virtualvoidsetAnchorPoint(constCCPoint&anchor);//默认(0.5,0.5)
  19. virtualvoidignoreAnchorPointForPosition(boolvalue);
  20. virtualvoidsetVisible(boolbVisible);
  21. virtualvoiddraw(void);

2.4.继承自CCNodeRGBA

  1. //设置颜色
  2. virtualvoidsetColor(constccColor3B&color3);
  3. //传递颜色
  4. virtualvoidupdateDisplayedColor(constccColor3B&parentColor);
  5. //设置透明度
  6. virtualvoidsetOpacity(GLubyteopacity);
  7. //设置/返回透明度是否跟随颜色值变化而变化
  8. virtualvoidsetOpacityModifyRGB(boolmodify);
  9. virtualboolisOpacityModifyRGB(void);
  10. //传递透明度
  11. virtualvoidupdateDisplayedOpacity(GLubyteparentOpacity);

2.5.批节点

  1. //更新4属性:x,y,rotation,scale
  2. virtualvoidupdateTransform(void);
  3. //如果精灵是由批节点CCSpriteBatchNode渲染的,则返回批节点
  4. virtualCCSpriteBatchNode*getBatchNode(void);
  5. //设置批节点,不推荐使用
  6. virtualvoidsetBatchNode(CCSpriteBatchNode*pobSpriteBatchNode);

2.6.纹理

  1. //设置纹理区域
  2. virtualvoidsetTextureRect(constCCRect&rect);
  3. virtualvoidsetTextureRect(constCCRect&rect,boolrotated,constCCSize&untrimmedSize);
  4. virtualvoidsetVertexRect(constCCRect&rect);

2.7.精灵帧和动画

  1. //设置新的精灵帧
  2. virtualvoidsetDisplayFrame(CCSpriteFrame*pNewFrame);
  3. //返回精灵帧是否在使用
  4. virtualboolisFrameDisplayed(CCSpriteFrame*pFrame);
  5. //返回当期使用精灵帧
  6. virtualCCSpriteFrame*displayFrame(void);
  7. //设置动画和显示索引
  8. virtualvoidsetDisplayFrameWithAnimationName(constchar*animationName,intframeIndex);

2.8.Setter和Getter方法

设置/获取CCSprite属性。

  1. //设置获取是否更新
  2. virtualboolisDirty(void);
  3. virtualvoidsetDirty(boolbDirty);
  4. //返回坐标、顶点、颜色信息
  5. ccV3F_C4B_T2F_QuadgetQuad(void);
  6. //返回纹理旋转
  7. boolisTextureRectRotated(void);
  8. //返回/设置地图集索引
  9. unsignedintgetAtlasIndex(void);
  10. voidsetAtlasIndex(unsignedintuAtlasIndex);
  11. //返回精灵区域,单位为点
  12. constCCRect&getTextureRect(void);
  13. //如果采用批渲染,返回/设置纹理地图集
  14. CCTextureAtlas*getTextureAtlas(void);
  15. inlinevoidsetTextureAtlas(CCTextureAtlas*pobTextureAtlas);
  16. //获取偏移
  17. constCCPoint&getOffsetPosition(void);
  18. //设置返回翻转
  19. boolisFlipX(void);
  20. voidsetFlipX(boolbFlipX);
  21. boolisFlipY(void);
  22. voidsetFlipY(boolbFlipY);
分享到:
评论

相关推荐

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    Cocos2d-x 3.x游戏开发实战pdf含目录

    接着,书中会详细讲解Cocos2d-x 3.x的图形绘制,包括精灵(Sprite)、批处理(Batch Node)、纹理 atlases和图集管理。开发者可以学会如何高效地绘制2D图形,利用纹理atlases优化内存使用,并通过批处理技术提升渲染...

    Cocos2d-x实战:C++卷(2版)源代码

    《Cocos2d-x实战:C++卷(2版)源代码》这本书是关于使用Cocos2d-x游戏引擎进行游戏开发的专业指南。Cocos2d-x是一个开源的、跨平台的游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言...

    cocos2d-x windows vs2010配置

    "cocos2d-x windows vs2010 配置详解" 本文将详细介绍如何在 Windows 环境下使用 Visual Studio 2010 配置 Cocos2d-x 游戏引擎。Cocos2d-x 是一个跨平台的游戏引擎,可以在多种平台上运行,包括 Windows、Mac OS X...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    《cocos2d-x 3.8:经典游戏引擎源码解析》 cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这...

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    此外,Flash2Cocos2d-x 1.3还优化了资源导出的效率和格式,支持导出为cocos2d-x兼容的精灵表(Sprite Sheets)和骨骼动画(Spine或DragonBones)。这样,游戏在运行时可以更有效地加载和渲染动画,提高游戏性能,...

    cocos2d-x-3.1.zip

    3. **渲染引擎**:Cocos2d-x 3.1包含了强大的2D渲染引擎,能够处理精灵(Sprites)、纹理(Textures)、动画(Animations)、粒子系统(Particle Systems)等图形元素。 4. **场景管理**:使用Scene类来管理游戏的...

    cocos2d-x-3.13.1 spine3.6.zip

    Cocos2d-x提供了一个SpineNode类,它是Cocos2d-x的CCNode的子类,可以直接在场景中添加和管理Spine动画。通过Lua绑定,你可以轻松地调用Spine的API来播放、停止、暂停或重置动画,以及改变动画的速度、时间缩放等...

    cocos2d-x_v3.16安装及环境变量配置文档

    cocos2d-x 是一个开源的游戏开发框架,使用 C++ 语言编写,支持多平台发布,包括 iOS、Android、Windows、macOS、Linux 和 Web。cocos2d-x v3.16 是该框架的一个版本号,本文档主要介绍了该版本的安装流程以及环境...

    Cocos2d-x实战C++卷关东升著完整版pdf

    读者需要理解C++的基本语法、类与对象、模板等核心概念,以便更好地运用到Cocos2d-x中。 在Cocos2d-x框架内,主要包括场景(Scene)、层(Layer)、节点(Node)等概念。场景是游戏的顶层容器,可以包含多个层,层...

    cocos2d-x事件类

    在使用cocos2d-x开发游戏的过程中,为了实现逻辑和显示相分离。 在下通宵了一个晚上,写出了该事件类。 谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类...

    cocos2d-x 3.0

    在2D游戏中,人物行走通常通过精灵(Sprite)类来实现,cocos2d-x 3.0中的cc::Sprite是用于展示静态或动态图像的对象。人物行走的过程涉及精灵的位置改变、帧动画(Frame Animation)以及物理引擎(如Box2D)的应用...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    2. **图形与动画**:讲解如何使用Cocos2d-x的绘图API绘制2D图形,实现精灵(Sprite)、动画(Animation)和粒子系统(Particle System)。 3. **物理引擎**:介绍Cocos2d-x内置的Box2D物理引擎,用于模拟游戏中的...

    Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整

    标题中提到了"Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整",这里面包含了几个关键知识点: 1. Cocos2d-x:是一个开源的游戏开发框架,它主要用于开发跨平台的游戏和应用程序,支持iOS、...

    cocos2d-x-2.1.4.rar

    《cocos2d-x 2.1.4:探索移动游戏开发的新篇章》 cocos2d-x 是一个跨平台的2D游戏开发框架,它为开发者提供了强大的工具和技术支持,使得游戏开发变得更为便捷。2.1.4 版本是这个框架的一个重要里程碑,它在前一...

    cocos2d-x-2.1.5

    cocos2d-x-2.1.5

    Cocos2d-x实战 JS卷

    1. **Cocos2d-x架构**:理解Cocos2d-x的组件系统,包括Scene(场景)、Layer(层)、Sprite(精灵)、Node(节点)等,以及它们在游戏中的作用和交互方式。 2. **JavaScript绑定**:Cocos2d-x如何将C++底层库与...

    cocos2d-x API中文文档

    【cocos2d-x API中文文档】是一份详尽的资料,主要涵盖了cocos2d-x游戏引擎的API,这份文档适用于2015年的最新版本。cocos2d-x是一个基于MIT许可证的开源游戏引擎,它以快速、简单且功能强大的特性闻名,允许开发者...

    cocos2d-x 案例开发大全 第二章(源码)

    《cocos2d-x案例开发大全》第二章的源码主要涵盖了使用cocos2d-x进行游戏开发的各种实践技巧和示例。cocos2d-x是一个开源的游戏开发框架,基于C++,支持跨平台,包括iOS、Android、Windows等多个操作系统。本章的...

    cocos2d-x-3.13.1.zip

    《cocos2d-x 3.13.1:深入解析与应用》 cocos2d-x 是一个开源的游戏开发框架,广泛应用于跨平台2D游戏的开发,支持iOS、Android、Windows等操作系统。它的3.13.1版本是一个重要的里程碑,提供了诸多改进和优化,...

Global site tag (gtag.js) - Google Analytics