调用 fullPathForFilename 出现崩溃

ccocos2d-x 新手一枚,在用一些基本东西时总出现小概率崩溃问题,感觉是用的姿势不太对,求指点。

在使用
Sprite *sprite = Sprite::create(“path/image.png”);

ui::Scale9Sprite *sprite = ui::Scale9Sprite::create(“path/image.png”);
时,有时会出现崩溃问题,错误栈中找到崩溃的位置在
CCTextureCache.cpp (line 326) std::string fullpath = FileUtils::getInstance()->fullPathForFilename(path);

开发环境 Mac Xcode,cocos2d-x 版本 3.10,运行环境 IOS 9.3

可能是你的 资源路径没有加载到 search path 里面,你看看工程的 AppDelegate.cpp 里面的 searchPath 设置了哪些资源搜索路径。

1赞

谢谢,我一直没有添加过 searchPath,我的资源文件都是添加的 Folder References,这样使用也需要添加 searchPath 吗?

需要的,如果你添加的是黄色文件夹,则不需要加 path 路径,直接 image.png 就可以使用了,如果你要带全路径,一般是添加蓝色文件夹。

是的,蓝色的,我加上试试,谢谢!

你好,我加上了 searchPath 还是出现了问题,我是在一个 Layer 的 init 方法中设置背景时,调用:

this->setSpriteBackGround(Sprite::create(“res/semi_transparent.png”));

出现的错误

我在 AppDelegate.cpp 的 bool AppDelegate::applicationDidFinishLaunching() 方法中加入了下面一段,添加 searchPath

// 增加 searchPath
std::vector<std::string> searchPaths = FileUtils::getInstance()->getSearchPaths();
searchPaths.push_back("res");
searchPaths.push_back("fonts");
searchPaths.push_back("audio");
searchPaths.push_back("map");
FileUtils::getInstance()->setSearchPaths(searchPaths);

麻烦帮我看一下是我的写法有什么问题吗?谢谢!

PS. 我发现出现问题的图片都是一些 1*1 大小的图片,我们做了一些 1 个像素的图片用来拉伸染色什么的,是不是 1 像素的图片有什么特殊的地方,会导致这种问题?