窗口大小被改变了,怎么把所有widget重新适配一遍

某些平台的客户端,加载游戏时窗口会变化,结果就是游戏的一些挂了widget的界面不是全屏状态,有没有什么好办法么?

暂时先重写cc.Widget.prototype.onLoad和onDestroy,把widget缓存起来吧。

let widget = this.node.getComponent(this.node,cc.Widget);
if (widget){
widget.enabled = false;
widget.enabled = true;
}

试下

刷新游戏内所有的widget,不是获取某一个刷新

我需要刷新所有

var scene = cc.director.getScene();
cc.each(scene.getComponentsInChildren(cc.Widget), function(wg,i){
wg.updateAlignment();
});

2赞

思路挺好,只是要遍历节点树,但应该影响也不太大

监听resize事件处理就行了,如果窗口大小只改变一两次这个性能开销不会造成多大影响

获取根节点, 递归获取子节点, 尝试获取widget组件, 能获取到组件则updateAlignment.
先更新母节点再更新子节点, 这个是widget的特性要求的.
最好设置一个schedule, 不需要修改得太频繁