[jsb]2.2工程迁移 Cocos2dx 3.0 alpha1 后,setTouchEnabled导致崩溃

现象:
在一个由CCB建立的Layer(根结点)里,调用setTouchEnabled,直接出错。

查了一下,以前的
js_cocos2dx_CCLayer_setTouchEnabled
是直接由 tojs 生成,实现是直接调用layer->setTouchEnabled
现在转移到 cocos2d_specifics 里了,在setTouchEnabledForLayer中可以看出
逻辑使用 layer的userObject 来存放一个 Dictionary,然而CCB根结点layer的userObject已经用于存放CCBAnimationManager

    auto dict = static_cast(layer->getUserObject());
    if (dict == nullptr)  // 这里过了,但实现上是CCBAnimationManager
    {
        dict = Dictionary::create();
        layer->setUserObject(dict);
    }
    
    dict->setObject(Bool::create(enabled), "touchEnabled");  // 这里会挂掉

```


问题1:引擎内部功能自己把userObject给用了,是否合理?(CCB存放动画管理器到userobject中,应该是没得选择了)
问题2:目前我的修改方案是在Node中增加一个void*,专门存放CCBAnimationManager。引擎以后的版本是否有可能改掉这个Dictionary的存放位置?

无关此问题的问题:
码字较久,提示验证码失效。。。。内容没了
又码完字,点“看不清,换一张”,直接跳转到一个空页面,内容又没了,还好这次复制了。。

jsb方面:
3.0的整套touch事件机制看起来重写了
使用习惯上遇到许多问题,这里有个问题比较悲剧(2.x没有这个问题):

结构 Scene->layer->layer2->tableView

TableViewDelegate{
    this.tableCellTouched = function (table, cell) {
        //.....忽略N级调用堆栈
        layer2.getParent().removeAllChildren();
        //.....
    };
}

```

在tableCellTouched事件产生后,在第N级的回调函数里,把layer2给移除了。
这时程序会直接挂掉,挂在ScrollView的onTouchEnded里(在layer2被移除时,tableView等已被析构)
考虑到不能在touch事件中移除自己,我想的方案是layer2->retain(). layer2->autorelease(); 再执行逻辑代码
JS中目前没有导出autorelease
不知道是否还有其他方案

我的cocos2d-x 3.0 编译安卓出现错误
E:\MyFile\cocos2d-x-3.0alpha1\projects\a\proj.android…/…/…/cocos/2d/CCEvent
istenerAcceleration.h:40:46: error: expected ‘;’ at end of member declaration
E:\MyFile\cocos2d-x-3.0alpha1\projects\a\proj.android…/…/…/cocos/2d/CCEvent
istenerAcceleration.h:40:48: error: ‘override’ does not name a type
E:\MyFile\cocos2d-x-3.0alpha1\projects\a\proj.android…/…/…/cocos/2d/CCEvent
istenerAcceleration.h:41:33: error: expected ‘;’ at end of member declaration
E:\MyFile\cocos2d-x-3.0alpha1\projects\a\proj.android…/…/…/cocos/2d/CCEvent
istenerAcceleration.h:41:35: error: ‘override’ does not name a type
cc1plus.exe: warning: unrecognized command line option “-Wno-literal-suffix” [e
abled by default]
make: *** Error 1
make: Leaving directory `E:/MyFile/cocos2d-x-3.0alpha1/projects/a/proj.android’

怎么解决啊?

我也遇到这个问题了,目前网上的关于3.0的资料太少