cocos2dx--sprite的理解

本文使用cocos2dx自带的hellocpp文件。

1. 先看sprite的创建,直接通过resource下的图片进行创建:

显示结果如下:红色箭头标注的人物就是通过图片创建的sprite。

使用creat的方法很方便的就创建了一个人物在画面上,那么cocos2dx究竟是如何实现的呢?因为这款引擎是开源的,所以我们可以直接通过代码深入到引擎内部看看。

直接查看creat的定义:


显然此方法是cocos2dx特有的创建方式,一般我们在使用c++的时候,惯例是在构造函数中给成员变量进行分配内存或初始化。但是在引擎中是单独使用create方法分配内存,

在init方法中初始化,读者可以自行看看hellocpp的构造函数和析构函数都是没有实现的。通过create的定义,可以看出是一个单例模式。

继续看代码,create内部分配了一块内存给指针pobSprite, 紧接着使用initWithFile进行初始化,从名字上猜测是通过文件来进行初始化或赋值。

继承查看initWithFile的定义:

可以看到此函数的关键点:addImage方法给一个全局变量sharedTextureCache中添加一张图片。这个全局变量可以暂时理解成图片的缓存区。ok,我们继续查看addimage的

定义。这个方法的定义比较长,对于一些常用的安全检测略过。


通过以上的代码,可以很清楚的看到:sharedFileUtils()->getFileDate(fullPath,c_str(),"rb",&nSize), 这不就是我们在c++中常用的文件的读取方法么?rb就是用2进制的方式

读取图片。这个应该很好理解了,图片可以是2进制存储的。


通过create的方法先分配一段内存,然后在这个内存中放入2进制的图片信息来进行初始化。这样sprite的创建就完成了。

接着就应该是图片的通过openGL的处理在显卡中转换成我们在屏幕中看到的sprite图片了。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值