cocos2d-js的一个低级缺陷:csb文件不能放在自建的目录中

最近想把原先用2dx C++写的项目改成用js来写,延伸到web平台。
然后发现一个低级的缺陷:
CocosStudio中的csb文件不能放在目录中!

如下图:

MainScene.csb放在“cs/test/”文件夹中,
然后在代码中引用。

就出错了,
如下图:

后来反复试验,发现:
csb文件必须要放在根目录下才不会出错。
如下图:

我去。
这样的话,cocos2d-js 根本不适合做上点规模的项目。
因为上点规模的项目会有相当多csb页面文件。
如果全部都放在根目录下,就不能进行分类管理。
一大堆csb文件放在根目录下看得都眼花,这样科学吗???

很怀疑做cocos工具链的人是否自己有游戏开发的经验,
这么多低级又蛋疼的问题就是那么多人转到unity的原因!
各种不完善。只有考虑Unity了!!!

呵呵哒!呵呵哒!~

是有这么个垃圾问题 ,他们一直不解决的

是的,这个问题我原来也遇到过,然后自己写了脚本,每次修改导出的json文件,我也是服了。

N个版本都没修复这么个简单的问题,在论坛也是提了无数次了,唉

通过报错的信息可以看出来是资源地址拼错了
下面是我的修改方法

  1. scene-1.x.js文件

    var loadTexture = function(json, resourcePath, cb){
    if(json != null){
    var path = json[“path”];
    var type = json[“resourceType”];
    var plist = json[“plist”];
    if(!path)
    return;
    //if(plist){
    // if(cc.loader.getRes(resourcePath + plist)){
    // loadedPlist[resourcePath + plist] = true;
    // cc.spriteFrameCache.addSpriteFrames(resourcePath + plist);
    // }else{
    // if(!loadedPlist[resourcePath + plist] && !cc.spriteFrameCache.getSpriteFrame(path))
    // cc.log("%s need to be preloaded", resourcePath + plist);
    // }
    //}
    // ★源代码有问题, 这里的加载路径被修改过了
    var correctPath = “res/” + plist;
    if(plist){
    if(cc.loader.getRes(correctPath)){
    loadedPlist[correctPath] = true;
    cc.spriteFrameCache.addSpriteFrames(correctPath);
    }else{
    if(!loadedPlist[correctPath] && !cc.spriteFrameCache.getSpriteFrame(path))
    cc.log("%s need to be preloaded", correctPath);
    }
    }
    if(type !== 0)
    cb(path, type);
    else
    cb(resourcePath + path, type);
    }
    };

2.timelineParser-2.x.js文件

//var loadTexture = function(json, resourcePath, cb){
//    if(json != null){
//        var path = json["Path"];
//        var type;
//        if(json["Type"] === "Default" || json["Type"] === "Normal")
//            type = 0;
//        else
//            type = 1;
//        var plist = json["Plist"];
//        if(plist){
//            if(cc.loader.getRes(resourcePath + plist)){
//                loadedPlist[resourcePath + plist] = true;
//                cc.spriteFrameCache.addSpriteFrames(resourcePath + plist);
//            }else{
//                if(!loadedPlist[resourcePath + plist] && !cc.spriteFrameCache.getSpriteFrame(path))
//                    cc.log("%s need to be preloaded", resourcePath + plist);
//            }
//        }
//        if(type !== 0){
//            if(cc.spriteFrameCache.getSpriteFrame(path))
//                cb(path, type);
//            else
//                cc.log("failed to get spriteFrame: %s", path);
//        }else
//            cb(resourcePath + path, type);
//    }
//};
// ★修改加载资源bug
var loadTexture = function(json, resourcePath, cb){
    if(json != null){
        var path = json["Path"];
        var type;
        if(json["Type"] === "Default" || json["Type"] === "Normal")
            type = 0;
        else
            type = 1;
        var plist = json["Plist"];
        var correctPath = "res/" + plist;

        if(plist){
            if(cc.loader.getRes(correctPath)){
                loadedPlist[correctPath] = true;
                cc.spriteFrameCache.addSpriteFrames(correctPath);
            }else{
                if(!loadedPlist[correctPath] && !cc.spriteFrameCache.getSpriteFrame(path))
                    cc.log("%s need to be preloaded", correctPath);
            }
        }
        if(type !== 0){
            if(cc.spriteFrameCache.getSpriteFrame(path))
                cb(path, type);
            else
                cc.log("failed to get spriteFrame: %s", path);
        }else
            cb(correctPath, type);
    }
};

ccs.load(name, “res/”);传第二个参数