关于cocos2d-js 3.1使用proto buffer文件时遇到的问题

  1. 工作环境
    a) 系统:win8
    b) 引擎:cocos2d-js 3.1
    c) IDE:Cocos Code IDE V1.0.1
    d) Studio:Cocos Studio V2.0 Beta0

  2. 工作内容
    a) 在Studio中,建立如下文件:
    。场景:S.csd
    。层:L1.csd
    。层:L2.csd

     b) 在场景S中,建立节点层次,如下:
         -- Scene
             -- P_Body (添加的基础容器)
                 -- Pn_L1 (由L1.csd文件拖入形成)
                 -- Pn_L2 (由L2.csd文件拖入形成)
    
    
     c) 在IDE中,读取引擎生成的S.csb文件,采用如下代码读取
          。var widget = ccs.csLoader.createNode("res/S.csb");
          。var pn_l1 = ccui.helper.seekWidgetByName(widget, "Pn_L1");
    
  3. 遇到问题
    a) 获取的pn_l1是null
    b) 追踪到引擎代码,发现CSLoader.js的334行报错,就是说S.csb加载失败:
    。334行代码是:var filePath = options.filename();
    。这是加载S.csb中Pn_L1时报的错误,错误是:undefined is not a function
    。触发流程:CSLoader在加载S.csb时,发现里面有一个ProjectNode,这时,它会获取这个节点的文件路径,然后进一步加载这个路径的csb文件,可是,在获取这个路径时出现错误,导致无法加载后续的实体。

  4. 说明
    a) 有可能是自己使用方式的问题,不过,不管是什么问题,还请帮忙解决!

b) 上传个测试项目,包含项目资源(但不包含frameworks, runtime和tools三个文件夹),这个项目可以重现上述问题!
CocosTest.zip (96 KB)

你好~~

额。这个,额,那个。。。
具体问题看描述也不太好定位额,有木有具体的csb文件?
如果方便的话,发一份给我咯,我们会在第一时间处理这个问题的~~

大家一起干巴爹~~~:2::2:

我的邮箱是 sijie.wang@chukong-inc.com

var filePath = options.filename();

这个应该是:

var filePath = options"filename"];

T.T 你不会怪我吧。》~~

我也不知道var filePath = options.filename();

没人管了,自己顶一下!:2:

你怎么知道csloader 的,我在3.0版本的api里没发现这个呀,3.1的api文档有吗

楼主可以采用
var pn_l1 = widget.getChildByName(“Pn_L1”);
这种方式可以获取到

我用的是3.1的API

问题不是出在“ ccui.helper.seekWidgetByName”这行,而是出在ccs.csLoader.createNode(“res/S.csb”)这行,这行代码没有完整执行!

ccs.csLoader.createNode(“res/S.csb”) 得到的是否是NULL?

建议楼主看一下官方的demo,看下图 我圈出来的那一行。

var widget = ccs.csLoader.createNode(“res/S.csb”);
在保证 widget能取到值的前提下,使用ccui.helper.seekWidgetByName(widget, “Pn_L1”); 我没有获取到值 可能是我使用的问题吧,
使用 widget.getChildByName(“Pn_L1”); 是正常获取

3.1的api在哪里?我怎么只找到了3.0的

我也折腾了很久,这个帖子应该可以解决你的问题,因为你涉及到了csb嵌套:
http://www.cocoachina.com/bbs/read.php?tid=272678#