1.4版本widget updateAlignment 未生效 未取到正确的size

第一个箭头为onLoad 第二个箭头为 第一次lateUpdate ,第三个箭头为第二次lateUpate了(这次才生效)

下面是代码

@jare @Knox

我认为这是你场景中自己对 maskView 进行了动态调整导致的两次 lateUpdate 数据不一致。
理由是 lateUpdate 本来就会在 widget 当帧生效后才触发。所以你不论有没有调用 updateAlignment,这里的结果都应该是一样的。
也就是说这里没有引擎层的问题,也没有 updateAlignment 的问题。问题在于你两帧之间动态修改了 maskView 或者它的父物体的高度。

我搞个简单点的测试下

完全没写别的代码,但是输出还是一样啊

那是因为节点的尺寸在场景里保存的就是 widget 对齐后的,所以你再对齐多少次也还是一样的。

就是说要在场景脚本中对齐是有效?

嗯 asdf

我一个子node的绑定脚本 要根据正确的size 来写逻辑,这怎么搞啊。。 第一次onLoad肯定不行。。

在你要执行逻辑之前,调用 updateAlignment
比如:

function runLogic () {
  var height = this.node.height;
  // ...
}
改成
function runLogic () {
  this.getComponent(cc.Widget).updateAlignment();
  var height = this.node.height;
  // ...
}

在子node脚本:confounded:中获取的高度不是正确的啊。。难道逻辑全要写在scene脚本,在传过去。。。。。。

不管要获取谁的高度,你所谓根据正确 size 来写逻辑,这个逻辑在哪就在哪里调用 updateAlignment()
重点在调用时机,无所谓在哪调用,也无所谓要调用哪个 widget

比如我在onLoad 对齐 start 也是对齐之后执行的么

不懂你在说什么………… 能给个详细点的流程吗

我在瞅瞅11