修改CCSGLabel的代码没生效?

我想在CCSGLabel里面添加一个比如叫testFunc的成员函数,但是在编辑器模式下执行label._sgNode.testFunc编辑器给了个警告“label._sgNode.testFunc is not a function”。新添加的代码已经保存,并且使用gulp build成功地将整个engine rebuild了下。

既然build成功了,但是编辑器又不识别testFunc,难道编辑器模式下label._sgNode的类型不是CCSGLabel? 另外,感觉jsb_polyfill.js是build之后合成的js文件,就在jsb_polyfill.js文件中搜索了testFunc字符串,但是没找到,也就有另外一种可能是修改过的CCSGLabel文件没有被build到?

望路过高手不吝赐教:)

描述中的label.sgNode应该是label._sgNode,不知道前面的下划线为什么显示不出来。

没有,确实是 Label,不过现在是定义为 _ccsg.Label

你在 js 中修改的 _ccsg.Label 是用于 html5 和编辑器的版本,如果要在 JSB 上运行,需要把你修改的代码放到 “jsb-label.js” 中

至少现在可以确定的是,在编辑器模式下label._sgNode类型确实是_ccsg.Label,而模拟器模式下的类型是在jsb-label.js文件中的。那么问题来了,我要的就是编辑器模式下的效果,如问题描述中所说我修改了CCSGLabel,并且通过gulp build成功rebuild了engine,但是编辑器模式下的控制台仍然给出了“label.sgNode.testFunc is not a function”的警告,这是何解啊?

上面的testFunc其实就是enableShadow。代码label._sgNode.enableShadow在模拟器中运行的时候是没有问题,但是我们想在编辑器中编辑的时候也能实时看到阴影效果,所以才会想去修改 _ccsg.Label,然后就遇到了上面的问题。

请问你是怎么修改的,修改的是哪一个路径下的文件?

creator版本:v1.1.1
文件路径:AppData\Local\CocosCreator\app-1.1.1\resources\engine\cocos2d\core\label\CCSGLabel.js
code如图:

红框中是我添加的enableShadow函数,上面的setOutlineColor函数是引擎的代码。此函数确认是在_ccsg.Label里面的,在文件的200+行。

你的步骤没错,我也测试过了这边在编辑器下可以读取到那个方法。应该是你什么地方搞错了,你可以检查下 engine/bin/modular-cocos2d.js 中是否有你新增的代码。

非常感谢@jare