看了一下Layout的代码,有个疑问:
_updateChildrenEventListener() 中注册了子节点的一些事件,但是在’child-removed’时,并没有反注册,这样是不是导致一些不必要的doLayout()?
看了一下Layout的代码,有个疑问:
_updateChildrenEventListener() 中注册了子节点的一些事件,但是在’child-removed’时,并没有反注册,这样是不是导致一些不必要的doLayout()?
如果layout 节点被移除是会自动反注册的,能否具体说明一下,哪些情况会导致不必要的 doLayout 计算呢?
A是Layout,B是A的子节点。A会监听B的size-changed, position-changed, anchor-changed,active-in-hierarchy-changed事件。
如果把B从A中移除,加入节点C。那么当B的size/position等发生改变时,A仍然会得到这些事件,并将_layoutDirty设为true。因为Layout里,并没有取消监听B的事件。
不知道这样说是否清楚?
PS: 我还有另一个疑问,如果用相同的函数重复注册事件,会被调用多次吗?
node.on(‘event’, onEvent, this);
node.on(‘event’, onEvent, this);
node.on(‘event’, onEvent, this);
// 当事件触发时,onEvent会被调用3次吗?
不知道为啥我发不了新的主题。有个问题想问。
发新的主题时提示 Title 无效;请描述得更详尽些 已经写的不短了。
这个问题我研究得出的结果是,如果你的标题有英文,在英文开始前和英文结束后各加一个空格
我验证一下你说的这个问题,如果真的是这样,那确实会导致 doLayout 重复计算。
同样的函数注册多个不会调用多次,在注册的时候会检查是否已经注册。
确实如你所说,感谢指出,这是一个 bug。我会尽快修复此 bug,再次感谢。
老哥又遇到你了,我们论坛怎么这么奇葩,还要加空格的