Cocos2d-x 精灵图片预加载中不会出现重复加载问题

简介:

 为了应对大量精灵图片的加载问题,cocos2d-x提供了精灵数据的异步预加载机制,这是要是借助于CCTextureCache::addImageAsync函数来实现的。


    那么,当使用上述函数多次加载同一个精灵图片文件时,是否会出现加载多次呢?不会的。

    让我们来分析一下上述函数的关键部分代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void  CCTextureCache::addImageAsync( const  char  *path, CCObject *target, SEL_CallFuncO selector)
{
#ifdef EMSCRIPTEN
     CCLOGWARN( "Cannot load image %s asynchronously in Emscripten builds." , path);
     return ;
#endif // EMSCRIPTEN
     CCAssert(path != NULL,  "TextureCache: fileimage MUST not be NULL" );    
     CCTexture2D *texture = NULL;
     // optimization
     std::string pathKey = path;
     pathKey = CCFileUtils::sharedFileUtils()->fullPathForFilename(pathKey.c_str());
     texture = (CCTexture2D*)m_pTextures->objectForKey(pathKey.c_str());
     std::string fullpath = pathKey;
     if  (texture != NULL)
     {
         if  (target && selector)
         {
             (target->*selector)(texture);
         }
         
         return ;
     }

注意上面代码中的这一句:

1
texture = (CCTexture2D*)m_pTextures->objectForKey(pathKey.c_str());

框架使用了字典机制,通过键-值对方式进行纹理数据匹配,而上面这个函数中的字符串正对应于我们关注的精灵文件名,而文件名是不变的(也就是说,当我们使用addImageAsync函数多次试图加载同一个精灵图片文件时),所以,不会出现多次试图加载同一个精灵图片文件而导致系统重复加载的问题。













本文转自朱先忠老师51CTO博客,原文链接: http://blog.51cto.com/zhuxianzhong/1540413,如需转载请自行联系原作者




相关文章
|
区块链 Android开发
区块链大众化的落地产品-深度体验蚂蚁区块链鹊凿数字版权服务平台
从18年至今,一直在思考区块链的真正有价值的大众落地是什么。 18年在个人有限的认知里得出的结论是: 围绕着空气币是没有太多的价值,只对于黑灰色产业有价值。 19年末关注到了,蚂蚁链的-鹊凿数字版权版权平台。 时至今日,经历一年半的时光,2021年,最近看到了淘宝商家服务的成交量激增,和蚂蚁与杭州互联网公证处的深度合作。确信在未来3-5年,这是一个很好的历史市场环境。
1988 1
区块链大众化的落地产品-深度体验蚂蚁区块链鹊凿数字版权服务平台
|
存储 芯片 内存技术
Jlink使用技巧之读写SPI Flash存储芯片
Jlink使用技巧之读写SPI Flash存储芯片
1800 0
Jlink使用技巧之读写SPI Flash存储芯片
|
存储 缓存 负载均衡
《深入分布式缓存》之“关于Tair哪些事儿”
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
2453 0
|
存储 JSON 缓存
大麦 Android 选座场景性能优化全解析
大麦 Android 选座场景性能优化全解析
697 1
大麦 Android 选座场景性能优化全解析
|
存储 监控 Java
JVM内存模型详解,看不懂明天你就不用来了!
线程独占 每个线程都会有它独立的空间,随线程生命周期而创建和销毁 线程共享 所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁
JVM内存模型详解,看不懂明天你就不用来了!
|
小程序 程序员
微信小程序 | 一文总结全部营销抽奖功能
微信小程序 | 一文总结全部营销抽奖功能
614 0
微信小程序 | 一文总结全部营销抽奖功能
|
机器学习/深度学习 算法 数据挖掘
视频场景分割与语义分段(上)| 学习笔记
快速学习视频场景分割与语义分段(上),介绍了视频场景分割与语义分段(上)系统机制, 以及在实际应用过程中如何使用。
视频场景分割与语义分段(上)| 学习笔记
|
存储 消息中间件 运维
灵魂 36 问,让你快速熟悉一个系统
面对一个完全陌生的系统,如何快速的熟悉并上手?本文将从三个方面进行总结,提供一个系统的方法,同时也可以用来 review 已有的系统,查漏补缺。
8725 0
灵魂 36 问,让你快速熟悉一个系统
|
存储 弹性计算 固态存储
阿里云服务器租用价格表,(最新版CPU/内存/磁盘/带宽报价)
很多企业用户想一览阿里云服务器租用价格表,便于详细了解前期项目开支预算,因此,下面小编整理出以下最新的阿里云服务器租用价格表,同时较大家如何查询详细更详细的价格表,以供参考选择。
阿里云服务器租用价格表,(最新版CPU/内存/磁盘/带宽报价)
|
数据采集 人工智能 编解码
MAE 自监督算法介绍和基于 EasyCV 的复现
自监督学习(Self-Supervised Learning)能利用大量无标注的数据进行表征学习,然后在特定下游任务上对参数进行微调。通过这样的方式,能够在较少有标注数据上取得优于有监督学习方法的精度。近年来,自监督学习受到了越来越多的关注,如Yann Lecun也在 AAAI 上讲 Self-Supervised Learning 是未来的大势所趋。在CV领域涌现了如SwAV、MOCO、DINO、MoBY等一系列工作。MAE是kaiming继MOCO之后在自监督学习领域的又一力作。首先,本文会对MAE进行解读,然后基于EasyCV库的精度复现过程及其中遇到的一些问题作出解答。
MAE 自监督算法介绍和基于 EasyCV 的复现