3.6.3widget对齐模式问题

我也一直以为是每帧调用,不过看了一下2.4的源码确实是每帧调用的,应该是3.X优化了这个问题。这样就说得通为啥叫always了,毕竟持续迭代的产品,考虑到使用者的习惯等各种问题,一些变量的功能即使发生了变化,名字也很少会改变。只能说迭代了那么久,出现这种问题还是挺正常的。可能对直接使用3.X的开发者来说不是那么友好吧。

我也是2.4用过来的,我一直以为是每帧率调用,啥时候改了我并不知道,在我的大多数时候,我并不会用到这个always,好像记得有个update方法可以刷新父节点的宽高,我只用过那个方法

这就不知道了,毕竟谁会一个个版本看更新日志呢。但看2.4的源码还是每帧调用的。不过确实,优化之后改成默认always比较好

如果真如你所说,那就必须更改3.x的widge.always的名称了,毕竟名称还是得对应功能,不可能为了延承以前的用法而不去更改变量的名称

破案了,原来2.x是这样;我是从2.x用过来的,3.x直接用,没看过文档;
2.4文档


3.7文档

确实不一样了 :sweat_smile:
就说怎么会无缘无故认为 ALWAYS是每帧计算的 :joy:

何止你破案了,我都觉得官方的做法不可思议,既然去除了always的真正功能,那就不应该再用这个名词,真的是amazing的做法。等下官方估计会说:“经过我们的慎重考虑xxx”

淡定,哥们。不是啥大问题,搞清楚就好了,人身攻击没必要,和气生财 :smile:

1赞

你好,2.4 ALWAYS 是每一帧都会调用的,3.x 后来进行了优化,但是考虑到使用习惯所以命名保留了下来。话说回来,这里从命名上来说其实也没什么问题,AlignMode 表示“对齐模式”,always 强调的是始终对齐这一结果。不论底层是否用了 dirty check,结果就是始终对齐。

当然你要说对老用户可能造成误解,那确实有这个可能,我们会考虑换个名字,不过我暂时也没特别好的想法,比如改成 AUTO?

这应该是疏漏,我们会改成默认 ALWAYS


区别应该挺明显啊…… ON_WINDOW_RESIZE 只考虑窗口,不会考虑父节点

感谢回复,个人感觉命名的问题不算啥,3.x的 ALWAYS实现方式也优于2.x;修改掉默认选中应该就可以解决很多问题,毕竟大部分情况都不会去改这个值;
关于这个默认选中我有一点小想法,以项目经验来看,ONCE才是大部分场景需要的;ALWAYS需要监听事件,有额外开销;是不是可以默认选中ONCE;当然,如果两者相差不大,默认选中ALWAYS会更好。

窗口变大变小,节点不会变大变小?理论上always>on_window_resize

是啊,这个区别,文档不是说得很明显?有什么地方是文档误导人的吗?