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

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

专注于为中小企业提供网站制作、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业北海免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

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

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

void CCTextureCache::addImageAsync(const char *path, CCObject *target, SEL_CallFuncO selector)
{
#ifdef EMSCRIPTEN
    CCLOGWARN("Cannot load p_w_picpath %s asynchronously in Emscripten builds.", path);
    return;
#endif // EMSCRIPTEN
    CCAssert(path != NULL, "TextureCache: filep_w_picpath 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;
    }

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

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

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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站名称:Cocos2d-x精灵图片预加载中不会出现重复加载问题-创新互联
网页链接:http://bzwzjz.com/article/dgosge.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都响应式网站建设公司 宜宾网站设计 外贸网站设计方案 泸州网站建设 重庆电商网站建设 网站建设公司 网站制作 高端网站设计推广 企业网站建设公司 成都网站建设 成都定制网站建设 成都网站设计 成都网站设计 网站建设公司 外贸网站建设 成都网站设计公司 成都网站制作 企业网站制作 四川成都网站制作 商城网站建设 成都企业网站建设 高端定制网站设计