cocos2dx中的坑(持续更新中)

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。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容