微信子域界面变形

  • Creator 版本:v2.0.5

  • 目标平台: 微信小游戏

  • 问题:子域界面变形

比如要显示一个 500500 的排行榜,我的方法是这样的:
0. 主域和子域各创建一个节点,大小都是 500
500,需要显示的时候:

  1. 将主域节点 active 设为 true
  2. 将子域节点的 active 设为 true
  3. 将子域的 canvas 的 designResolution 设为子域节点的大小,也就是500*500
  4. 主域节点调用 updateSubContextViewPort()

这样做是没问题的,但是假如同时有另外一个比例不一样 200* 400 的节点,和上面那个节点轮流显示,就会出现变形。
具体现象是这样的:

  1. 显示 500*500 的节点,能正常显示
  2. 隐藏 500500 的节点,显示 200400 的节点,也能正常显示
  3. 隐藏 200*400 的节点,显示 500 * 500 的节点,显示变形

下面是截图,红框里的是子域的内容

不调用updateSubContextViewPort试试?只是子域切换节点的active

你好 参考下这个demo https://github.com/Jno1995/Subdomains-with-different-resolutions-in-the-same-scene
同场景下切换不同分辨率子域需要在主域修改子域分辨率

setCommandEvent (command, node) {
        sharedCanvas.width = node.width;
        sharedCanvas.height = node.height;
        wx.getOpenDataContext().postMessage({
            command: command,
            width: node.width,
            height: node.height,
        });
    }

试了一下,还是不行

看了一下应该需要重新手动执行

subContextView.onLoad()

这样才能重新初始化 shared canvas 的尺寸,这个地方考虑有点欠周全,我们建立一个 issue

2赞

刚刚试了一下,第一次显示就变形

用了 @panda 的方法,可以了,谢谢各位大佬

mark,之前也遇到同样的问题,索性把关闭排行榜换成再来一次了2333

之前的解决方案暴力点,显示的时候手动添加WXSubContextView,隐藏移除

不同场景size不一样,第二个显示的比例不对了。 这个怎么解决?

你可以参考下这里面的设计范例。
https://forum.cocos.com/t/cocoscreator/71010