现象:
在一个由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的存放位置?
无关此问题的问题:
码字较久,提示验证码失效。。。。内容没了
又码完字,点“看不清,换一张”,直接跳转到一个空页面,内容又没了,还好这次复制了。。