微信开放数据域WXSubContextView问题

根据官网文档上提示说可以关掉WXSubContextView,
subContextView.enabled = false;
subContextView.update();
但是,我执行update的时候会报错!请问这是什么原因呢?

报了什么错误,通常不能自己去执行 update 的

‘this.subContextView.getComponent(cc.WXSubContextView).update’ is null
但是如果
subContextView.enabled = false; 以后就会不更新了呀。
我看到官网那里是这样写的
https://docs.cocos.com/creator/manual/zh/publish/publish-wechatgame-sub-domain.html

那你这样吧,先看看你获取的 组件内容有什么,看看为什么没有 update

里面的确没有update方法,但是官网那边就是那样写的,是版本问题吗?我这边的版本是v2.05

如果可以的话,给我 demo 吧,我帮你看看

怎么给呢?

把项目打包成 zip 格式,然后上传上来,上传方式,直接拖到回复框中就可以上传了

:joy:我发现在打包了以后在微信环境下是不会报错的。。。!感谢你的回答,update的问题应该没问题了!但是本来的问题还没解决。
就是,我大概理解以下那两行代码是为了关闭主域对子域的更新
subContextView.enabled = false;
subContextView.update();
但是这两行代码写在哪呢? 我现在的情况是有两个scene,一个是主scene,另一个排行榜。由于排行榜有很多label,所以drawcall很高,如果只是单独排行榜这个scene问题不大,但其他scene也会收到影响。但是我怎么在其他scene的时候关闭对子域的更新呢?
我的想法是,当加载排行榜这个场景的时候就 更新子域,离开之前就关闭。
但是问题在于游戏在最开始的时候好像就加载了子域,那我怎么一开始就关闭它呢?我试过先把手动把active的勾选去掉。但是没有效果。。。

你可以在主域需要打开排行榜的时候才去 subContextView.enabled = true 吧,没必要一开始就为 true

例如我在主域有个按钮,点击以后,设置 subContextView.enabled = true 然后在发消息个子域获取用户信息,然后关闭排行榜的时候,在设置 subContextView.enabled = false 进行关闭,这样就可以了

我的意思是还没开始load主域到那个scene(就是排行榜这个scene),我的其他scene也会卡,也会drawcall很高。

就是说我现在有两个场景,A场景:首页场景;B场景:排行榜场景!
当我刚进入A场景的时候,drawcall已经很高了。这表明了子域已经生效。我想在这一步就把它禁止了。但是我不知道怎么跨到B场景里把subContextView设置为false!因为这时候B场景还没load呢

如果去掉子域的话,你会卡吗?

不会的,把wxsubcontextview这个组件删掉就不会卡了。

你就算删掉组件,子域还是会加载的进来的,应该是你 wxsubcontextview 组件一开始没禁用掉吧?

那你如果先关闭组件呢?

禁止了的!



wxshare.zip (166 字节)

代码我上传上去了,麻烦看一下

空的??

wxshare-sub.zip (1.6 MB)
wxshare-main.zip (1.5 MB)

不好意思,对zip命令不熟悉忘记加-r。