jsb中ctor里不能this._super(),请问怎么解决呢?

  • 本帖最后由 yzdzidan 于 2012-11-6 17:57 编辑 *

各位大侠,我想在ch5端和JSB端达成代码一模一样的实现,现在,我在jsb的ctor里写this._super()会报错。
于是,我在ctor里写cc.associa***的继承,把this._super()写在init:function(){}里,然后在new对象之后手动调用.init(),这样可以达成两端都实现。但是在cocos2d-html5端,cc.LayerColor用这个方法就会崩溃。
请问怎么解决呢?除了cc.LayerColor,我这样写都可以,但总觉得是在取巧。
或者我可以说对于CH5的cc.LayerColor这是个BUG?

一定要把this._super()写在cc.LayerColor的ctor里,才不会崩掉。

— Begin quote from ____

linshun 发表于 2012-11-12 10:11 url

— End quote

谢谢大哥林!

— Begin quote from ____

yzdzidan 发表于 2012-11-7 18:48 url

谢谢林总,我听懂了~~?之后的话,可以在JSB的对象的ctor里直接写this._super是吧?

— End quote

— Begin quote from ____

Shawn和月 发表于 2012-11-7 14:20 url

你可以根据运行环境决定是用this._super()还是用cc.associateWithNative。

— End quote

可是这两句不是都是必须的吗?对于JSB来说…

“各位大侠,我想在ch5端和JSB端达成代码一模一样的实现,现在,我在jsb的ctor里写this._super()会报错。”

这个问题是为binding的对象默认没有ctor的这个方法,所以导致去找父类的函数会出错。后续在做binding的时候,批处理会自动给每个binding出来的类添加一个ctor空的方法,所以你在调用this._super()就不会崩溃了。

  • 本帖最后由 yzdzidan 于 2012-11-7 18:50 编辑 *

— Begin quote from ____

linshun 发表于 2012-11-7 18:11 url

“各位大侠,我想在ch5端和JSB端达成代码一模一样的实现,现在,我在jsb的ctor里写this._super()会报错。”

— End quote

谢谢林总,我听懂了~~?之后的话,可以在JSB的对象的ctor里直接写this._super是吧?