这是官方文档说明:
这是我的配置:

这是我的输出代码:

这是我的运行结果:
既然我加了widget,为啥输出的尺寸还是设计分辨率的尺寸?从这运行结果可以看出,height明显比width大很多。
用cc.winSize试试
我是自已写了个组件对齐cc.winSize
各位没明白我的意思,我是想知道这个widget在这里到底发挥了啥作用,如果按照官方文档里所说的,canvas用来缩放,widget用来修改尺寸,那下面这个例子我更不知道作何解释?

运行结果为
哦,真的没看清楚,因为Widget我没放在Canvas上过,
通常是放在别的Node,然後不设定时它预设对齐父节点
我们上面讲的情况是,
当Canvas设定保持高度时,
在特殊机型上会出现宽度不足覆盖全屏
才会需要用到cc.winSize
看来需要at官方人员来询问一下
我这边使用官方 2.3 测出来结果是正常的,你是否定制了引擎?请检查你的场景设置?或者 Widget 改为 always 模式看看?
这么晚还在?辛苦了
没想到2.3.0居然对Canvas动手了。。。之前改了适配模式,这次也动Canvas节点的对齐了。
现在的适配过程应该是先按适配模式调整了visible rect的尺寸(对应屏幕分辨率的viewport):
我个人觉得Canvas节点的对齐逻辑还是之前那种更好,因为把这部分逻辑放到Widget中去之后,开发者会比较纳闷,Canvas还能向哪个target对齐?其父节点?其父节点是Scene,不好意思,Scene节点的size是0。只有查看一下源码才知道Widget对于向Scene对齐的节点是按visible rect对齐的。
如果实在有那种需要Canvas节点保持设计分辨率的场景,不如就让开发者单独建一个节点向设计分辨率对齐,然后按照该节点去对齐其他节点。
谢谢大大的分析。这部分行为应该是和旧版本保持不变的,从旧版本的源码可以看到,Canvas.alignWithScreen 中,不论是哪种适配模式,Canvas node 的尺寸都是等同于 visibleRect 的,和目前 Widget 的对齐行为一致。
这部分确实是我们文档做得不够好的地方。我们希望开发者尽可能清楚 widget 的这个机制,这样可以做出更灵活的场景结构,不需要把所有东西放在 Canvas 下面。
那样设计分辨率如果被改变了,这个节点所保持的宽高就错了。我们希望尽量能够保持数据来源只有一份,而不需要开发者手动去同步设计分辨率、节点之间的尺寸变化。