美文网首页cocos2dxshaco的代码世界
cocos2dx中的坑(持续更新中)

cocos2dx中的坑(持续更新中)

作者: lvshaco | 来源:发表于2015-02-08 20:36 被阅读694次

    1. tmx地块图片文件支持相对路径,但是却没有对..,.此类相对路径符号过滤处理,导致后面android中打开资源失败。####

    注意 AAssetManager_open中打开的文件必须是相对于assets的绝对路径,不能包含..,.符号,AAssetManager_open内部实现会在此路径前附加assets/,并且使用字符串完全匹配,即使是/改为\也跪。

    代码:CTMXXMLParser.cpp中解析tmx文件中<image source="图片路径"

    else if (elementName == "image")
    {
        TMXTilesetInfo* tileset = tmxMapInfo->getTilesets().back();
    
        // build full path
        std::string imagename = attributeDict["source"].asString();
    
        if (_TMXFileName.find_last_of("/") != string::npos)
        {
            string dir = _TMXFileName.substr(0, _TMXFileName.find_last_of("/") + 1);
            tileset->_sourceImage = dir + imagename;
        }
        else
        {
            tileset->_sourceImage = _resources + (_resources.size() ? "/" : "") + imagename;
        }
    }
    

    这里tmx文件包含路径,就要在内部图片文件前附加此路径。
    处理办法是直接将这个判断除掉,并且内部图片文件直接填写相对于assets的路径,例如assets/img/map/1.png,就直接填img/map/1.png,这个文件名直接传递给AAssetManager_open。


    相关文章

      网友评论

        本文标题:cocos2dx中的坑(持续更新中)

        本文链接:https://www.haomeiwen.com/subject/aafjxttx.html