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

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


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


1.概况


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

[cpp]  view plain copy
  1. //返回当前使用的纹理  
  2. virtual CCTexture2D* getTexture(void) = 0;  
  3.   
  4. //设置一个新的纹理,它会被retain  
  5. virtual void setTexture(CCTexture2D *texture) = 0;  


2.常用接口

2.1.初始化

[cpp]  view plain copy
  1. //初始化函数  
  2. virtual bool init(void);  
  3.   
  4. //用CCTexture2D纹理来初始化,精灵大小即是纹理大小  
  5. virtual bool initWithTexture(CCTexture2D *pTexture);  
  6.   
  7. ///用CCTexture2D纹理和大小来初始化  
  8. virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect);  
  9.   
  10. //用CCTexture2D纹理,大小,旋转来初始化  
  11. virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect, bool rotated);  
  12.   
  13. //用CCSpriteFrame精灵帧来初始化  
  14. virtual bool initWithSpriteFrame(CCSpriteFrame *pSpriteFrame);  
  15.   
  16. //用CCSpriteFrame精灵帧名来初始化  
  17. virtual bool initWithSpriteFrameName(const char *pszSpriteFrameName);  
  18.   
  19. //用外部文件初始化,外部文件会先被创建为纹理,再用纹理初始化精灵  
  20. virtual bool initWithFile(const char *pszFilename);  
  21.   
  22. //用外部文件和大小来初始化  
  23. virtual bool initWithFile(const char *pszFilename, const CCRect& rect);  

2.2.继承自CCTextureProtocol

[cpp]  view plain copy
  1. //设置/获取纹理  
  2. virtual void setTexture(CCTexture2D *texture);  
  3. virtual CCTexture2D* getTexture(void);  
  4.   
  5. //设置/获取颜色描绘时混合方案  
  6. void setBlendFunc(ccBlendFunc blendFunc);  
  7. ccBlendFunc getBlendFunc(void);  

2.3.继承自CCNode

参见CCNode。

[cpp]  view plain copy
  1. virtual void setScaleX(float fScaleX);  
  2. virtual void setScaleY(float fScaleY);  
  3. virtual void setPosition(const CCPoint& pos);  
  4. virtual void setRotation(float fRotation);  
  5. virtual void setRotationX(float fRotationX);  
  6. virtual void setRotationY(float fRotationY);  
  7. virtual void setSkewX(float sx);  
  8. virtual void setSkewY(float sy);  
  9. virtual void removeChild(CCNode* pChild, bool bCleanup);  
  10. virtual void removeAllChildrenWithCleanup(bool bCleanup);  
  11. virtual void reorderChild(CCNode *pChild, int zOrder);  
  12. virtual void addChild(CCNode *pChild);  
  13. virtual void addChild(CCNode *pChild, int zOrder);  
  14. virtual void addChild(CCNode *pChild, int zOrder, int tag);  
  15. virtual void sortAllChildren();  
  16. virtual void setScale(float fScale);  
  17. virtual void setVertexZ(float fVertexZ);  
  18. virtual void setAnchorPoint(const CCPoint& anchor);//默认(0.5,0.5)  
  19. virtual void ignoreAnchorPointForPosition(bool value);  
  20. virtual void setVisible(bool bVisible);  
  21. virtual void draw(void);  

2.4.继承自CCNodeRGBA

[cpp]  view plain copy
  1. //设置颜色  
  2. virtual void setColor(const ccColor3B& color3);  
  3.   
  4. //传递颜色  
  5. virtual void updateDisplayedColor(const ccColor3B& parentColor);  
  6.   
  7. //设置透明度  
  8. virtual void setOpacity(GLubyte opacity);  
  9.   
  10. //设置/返回透明度是否跟随颜色值变化而变化  
  11. virtual void setOpacityModifyRGB(bool modify);  
  12. virtual bool isOpacityModifyRGB(void);  
  13.   
  14. //传递透明度  
  15. virtual void updateDisplayedOpacity(GLubyte parentOpacity);  

2.5.批节点

[cpp]  view plain copy
  1. //更新4属性:x,y,rotation,scale  
  2. virtual void updateTransform(void);  
  3.   
  4. //如果精灵是由批节点CCSpriteBatchNode渲染的,则返回批节点  
  5. virtual CCSpriteBatchNode* getBatchNode(void);  
  6. //设置批节点,不推荐使用  
  7. virtual void setBatchNode(CCSpriteBatchNode *pobSpriteBatchNode);  

2.6.纹理

[cpp]  view plain copy
  1. //设置纹理区域  
  2. virtual void setTextureRect(const CCRect& rect);  
  3. virtual void setTextureRect(const CCRect& rect, bool rotated, const CCSize& untrimmedSize);  
  4. virtual void setVertexRect(const CCRect& rect);  

2.7.精灵帧和动画

[cpp]  view plain copy
  1. //设置新的精灵帧  
  2. virtual void setDisplayFrame(CCSpriteFrame *pNewFrame);  
  3.   
  4. //返回精灵帧是否在使用  
  5. virtual bool isFrameDisplayed(CCSpriteFrame *pFrame);  
  6.   
  7. //返回当期使用精灵帧  
  8. virtual CCSpriteFrame* displayFrame(void);  
  9.   
  10. //设置动画和显示索引  
  11. virtual void setDisplayFrameWithAnimationName(const char *animationName, int frameIndex);  

2.8.Setter和Getter方法

设置/获取CCSprite属性。

[cpp]  view plain copy
  1. //设置获取是否更新  
  2. virtual bool isDirty(void);  
  3. virtual void setDirty(bool bDirty);  
  4.   
  5. //返回坐标、顶点、颜色信息  
  6. ccV3F_C4B_T2F_Quad getQuad(void);  
  7.   
  8. //返回纹理旋转  
  9. bool isTextureRectRotated(void);  
  10.   
  11. //返回/设置地图集索引  
  12. unsigned int getAtlasIndex(void);  
  13. void setAtlasIndex(unsigned int uAtlasIndex);  
  14.   
  15. //返回精灵区域,单位为点  
  16. const CCRect& getTextureRect(void);  
  17.   
  18. //如果采用批渲染,返回/设置纹理地图集  
  19. CCTextureAtlas* getTextureAtlas(void);  
  20. inline void setTextureAtlas(CCTextureAtlas *pobTextureAtlas);  
  21.   
  22. //获取偏移  
  23. const CCPoint& getOffsetPosition(void);  
  24.   
  25. //设置返回翻转  
  26. bool isFlipX(void);  
  27. void setFlipX(bool bFlipX);  
  28. bool isFlipY(void);  
  29. void setFlipY(bool bFlipY);  
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: cocos2d-x 4. 学习之路 cocos2d-x是一款开源的跨平台游戏引擎,支持多种平台,包括iOS、Android、Windows、Mac OS X等。cocos2d-x 4.是最新版本,相比之前版本,它有很多新特性和改进,如增强的渲染性能、更好的3D支持、更好的物理引擎等。 如果你想学习cocos2d-x 4.,可以从以下几个方面入手: 1. 学习基础知识:了解cocos2d-x的基本概念、架构和工作原理,掌握cocos2d-x的编程语言和开发环境。 2. 学习API:熟悉cocos2d-x的API,包括场景管理、精灵、动画、音频、物理引擎等。 3. 学习示例代码:通过阅读和分析cocos2d-x的示例代码,了解如何使用cocos2d-x开发游戏。 4. 学习实践:通过实践开发小游戏,掌握cocos2d-x的开发流程和技巧,提高自己的编程能力。 总之,学习cocos2d-x 4.需要一定的时间和耐心,但只要你有兴趣和热情,相信你一定能够掌握它。 ### 回答2: cocos2d-x是一个强大的游戏引擎,可用于开发移动和桌面游戏。随着cocos2d-x更新至4.0版本,它的功能得到了大幅升级。如果你想学习cocos2d-x 4.0,以下是一些重要的步骤和建议。 1. 更改代码结构 cocos2d-x 4.0中启用了新的代码结构,旨在更好地实现模块化和解耦。新代码结构包括Core、Renderer、2d等模块,使代码更易于维护和升级。要理解新代码结构,请先阅读cocos2d-x官方文档,并针对各个模块学习和熟悉其API。 2. 学习新功能 cocos2d-x 4.0中引入了许多新功能,例如Shader、Render Queue等。学习新功能是非常必要的,因为它们将改变以前的游戏开发模式。了解这些新功能的实现原理,并在自己的项目中应用它们,有助于提高游戏性能和质量。 3. 学习C++11 cocos2d-x 4.0开始支持C++11标准,这意味着你可以使用C++11的新特性来编写更好的代码。要理解C++11的特性,建议通读一遍C++11的官方标准,并尝试在cocos2d-x项目中使用这些新特性。 4. 实战练习 最后,实战练习是学习任何技能的关键。为了更好地学习cocos2d-x 4.0,建议你尝试开发自己的游戏项目。通过尝试解决实际问题,你能更好地理解cocos2d-x的API,并在实践中掌握游戏开发的技术。 总而言之,学习cocos2d-x 4.0需要掌握新的代码结构、新的功能和C++11标准,并通过实际项目实战练习来加深理解。这需要一定的时间和耐心,但只要你认真学习、实践和不断尝试,必定能够取得成功。 ### 回答3: cocos2d-x 4.0是目前市面上非常流行的开源游戏开发引擎,在游戏开发领域有着较为广泛的应用。然而,学习cocos2d-x 4.0需要付出一定的努力和时间。以下是我对cocos2d-x 4.0学习之路的一些经验和建议。 1. 学习基础知识 在开始学习cocos2d-x 4.0之前,我们需要了解一些基础知识,比如C++语言、OpenGL ES等,这些都是cocos2d-x 4.0的底层实现技术。掌握这些基础知识会让我们从事游戏开发时更加得心应手。 2. 学习文档 学习cocos2d-x 4.0需要阅读官方文档,这些文档详细介绍了引擎的各个方面,而且是学习的最佳资料。文档里包括了引擎的安装、使用、开发以及调试等。建议大家先从官网下载文档,并且仔细阅读。 3. 实践和开发 掌握了基础知识以及学习了文档之后,最好的方式就是通过实践和开发来加深对cocos2d-x 4.0的理解。通过实际开发游戏来体验引擎的使用,这样能够更深刻的理解引擎的机制以及遇到的各种问题该如何解决。同时,通过找到一些相近的问题,并通过查阅文档、代码实现等方式来解决问题,可以增强自己的技术水平。 4. 参与社区 cocos2d-x 4.0的官方论坛以及社区非常活跃,里面的开发者也有着丰富的经验和技术,在学习中可以多向论坛、社区里的大牛请教,获得更多的技术指导,同时也可以参与讨论,提出自己的问题和思考来获得反馈,这样可以更快地提高自己的技术。 总之,学习cocos2d-x 4.0需要耐心和对游戏开发的热情。只有通过不断的学习与实践,我们才能最终掌握这个优秀的游戏开发引擎,从而创建属于自己的游戏作品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值