addPersistRootNode的bug

1,横屏游戏,根canvas勾选fit height
2,场景B,根canvas设置满屏图片,单独启动时正确fit height,居中显示,屏幕两边都有黑边
3,场景A,根canvas设置满屏图片,绑定脚本A.js,函数start代码如下:
start() {
cc.game.addPersistRootNode(this.node);
cc.director.loadScene(“B”);
}
4,从场景A启动,可以正确切换场景,但此时场景A的满屏图片可以正确fit height,居中显示,屏幕两边都有黑边,场景B的满屏图片无法正确fit height,完全移到屏幕左侧,不再居中显示

请问如何调用addPersistRootNode后也可以是场景B正确fit height,居中显示?

真是服了cocos creator的这个addPersistRootNode机制了,如果改变一个已经addPersistRootNode过的node的parent为正常场景的根节点,这个node就不再是常驻的了,不改变parent,又使后续加载场景的fit height设置完全无效,真不知道是怎么设计的机制。。。

真的是每次使用接口的结果,都和预想的不一样,都是痛点。。。

你好,请问你使用的是哪个版本的 CCC 呢?

你好,使用的是cocos creator v2.2.0

你是在canvas上绑定的A.js,然后把canvas节点设置成了常驻节点吗?creator一个场景只能有一个active=true的画布吧?

你提供下 demo 吧,我帮你看下。

是的,我是在canvas上绑定的A.js,确实两个场景的root都是canvas,但是如果不用canvas的话,这样A场景就没有自动适配了吧?需要自己手动去做适配?

demo发到您邮箱了,还请大大帮忙看一下,不知道是不是我使用方式不对的问题

预览在模拟器和网页都使用的是iphone x的分辨率配置,横屏

我看到你是将 A 场景的带有 Canvas 组件的节点设为常驻节点保留到 B 场景。CocosCreator 是不允许一个场景中存在两个 Canvas 的,会产生报错,并且导致节点位置适配错误。建议以后不将 Canvas 节点设为常驻节点。
另外就是如果给 B 场景 Canvas 挂一个脚本,上面写

this.node.position = cc.v2(cc.view.getVisibleSize().width / 2, cc.view.getVisibleSize().height / 2);

可以解决位置错误的问题。

我一般做适配都是结合wight组件使用,这样可以解决绝大多数的适配问题,并不需要把上个场景的canvas保留到当前场景。以前做横屏游戏也是这么解决各种分辨率适配的。

好的,我试一下,谢谢了

好的,我再改一下试试,刚开始用cocos creator不久,还不是很了解,谢谢啦