Cocos 2.1 + cocos2d-js 3.3 RC0,读取相对路径下的json文件无法正确解析

尝试使用了下 cocos 2.1+ cocos2d-js 3.3 RC0。

第一次导出资源的路径是
res/homePage/homeLayer.json 。

var json = ccs.load("
res/homePage/homeLayer.json");
var layer = json.node;

this.addChild(layer);

不能正确解析,调试时模拟器上什么都没有(只有黑色)。
cc.log(layer),确实是Layout。


第二次导出资源的路径是
res/homeLayer.json 。

var json = ccs.load("
res/homeLayer.json");
var layer = json.node;
this.addChild(layer);

这次可以正确解析。


我尝试了几次,确定其他变量均相同,只是.csd文件的路径不同。则加载成功与否情况不同。求解答。

因为cocosstudio的开发人员 搞不懂什么叫path这个东西。
我估计他解析csb的时候获取png的时候取的路径是csb的路径然后在加的资源的问题就 当csb不在根目录时 就sb了。

请问这是个bug吗?还是只有我出现这个问题。

目前编辑器假定导出的路径会被放置在searchpath中。

我的描述不准确。不是说导出路径的问题。

是文件放在res根目录与放在res下的子目录,效果是不同的。

两次
cocos studio 工程路径如下:
第一次路径: cocosstudio/homePage/homeLayer.csd
第二次路径: cocosstudio/homeLayer.csd

编辑器假定你导出的路径被放置在searchpath中。
即使你修改了这个导出路径

我试了下,果然如此。

— Begin quote from ____

引用第3楼东扬冬阳于2015-02-04 13:12发表的 回 楼主(碧落1989) 的帖子 :
目前编辑器假定导出的路径会被放置在searchpath中。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=284247&pid=1237131

— End quote

升级工具从1.6到2.1.5 碰到所有图片资源不显示的问题,看了CSLoader和SpriteReader的代码果然如此所说。
竟然和以前的解析机制不一样了,不会以正在解析的ui文件所在路径作为当前相对路径附加到引用的图片资源路径开头了。
找来找去终于找到这篇帖子是在讲这个问题的。

感谢答复。
建议在《Cocos引擎常见问题FAQ》 《【教程】Cocos2.x常见问题索引》中提到这一点

思虑良久,不能以正在解析的ui文件所在路径作为当前相对路径附加到引用的图片资源路径开头,
挺不合理的,
我被迫要把ui文件所用的资源所在路径,set到全局FileUtils所用的searchPaths,影响了全局的资源读取。

要是我的ui资源需要分开成多个项目工程、导出到分别目录,
比如有 res/ui/.csb、还有res/ui_battle/.csb、还有res/ui_social/.csb、还有download_res/ui/.csb
那就更麻烦了,需要add那么多searchPath,更容易出现全局searchPath里冲突了

我设置了 searchPath 没有什么变化 , 加载还是失败

var UI_ = ccs.load(Json.Achievement,“res/”);

path=資源最上層的目錄,它就能往下找了

1赞