父节点没有Widget,子节点加入Widget,
父节点修改width跟height,子节点只能等下一帧才会变化。。。
比如修改父节点
this.parent.width=400;
console.log(this.child.width);
现在子节点要马上得到这个结果,只能等下一帧,才能获取到结果,那样子有个毛用!!!!!
Widget 的定位没那么复杂,就是方便做一些常见的 UI,如果你需要一些不鸡肋或者高大上的功能,你可以自己做一个组件代替 widget。
widget 计算时需要用到父物体的 pos, anchor, scale, size 属性,目前没有监听这么多个变量,所以没办法实时刷新坐标。
如果要实时监听这些属性,就有可能导致父物体在一帧内同时修改多个属性时,出现多次的重复排版计算,很影响现有的 bunnymark 渲染成绩。
就算采用标志位的方式惰性求值,则需要在节点的坐标和尺寸的获取代码中耦合 widget 相关逻辑,不利于引擎的模块化。
引擎跑分现在基本上是在比较谁家的 js 端执行到的代码更少,所以为了提高引擎的跑分成绩,不建议做这方面的调整。
OK,理解了。为了性能,这么设计也是蛮合理的。
用户既然修改为指定的宽高,那么就可以用这个宽高自己计算出来相应的数值,进行后续逻辑。改动了这个地方的确对性能影响很大。