一般在使用cocos creator开发竖屏游戏时,常用的适配策略就是 fit width (固定屏幕的宽度,让高度自适应)
而这样的话,同一个精灵在不同的分辨率下,如果没有添加widget组件使精灵固定距离上/下,左/右的距离。那么精灵会随着画布(canvas)高度的自适应变化而y轴产生偏差,最直观的感受如下图
精灵位置向上偏移了。
在代码中,我们是用左上角紫色盒子的世界坐标转换到白色盒子节点坐标下,得到一个和白盒子在同一坐标系的节点坐标。然后我们再将白色盒子的坐标设置成紫色盒子的坐标。
理论上这样做了,白色盒子的中心应该是与紫色盒子的中心一致。在设计分辨率下,它们的中心点坐标也确实一致了。但是为什么在另一个分辨率下就变化了呢?
self.node.addChild(tree);
tree.position = tree.parent.convertToNodeSpaceAR(positionWorld);
开篇就已经说到了,固定设计分辨率宽度的适配策略下,高度会自适应。因此,解决的办法就是获取不同分辨率下画布的可视区域中心点。
cc.visibleRect
这个属性是一个对象,它包含了当前画布的所有尺寸位置信息,如果你在控制台打印&#x