收藏
回答

Cocos Creator 怎么把子域的 shared canvas 渲染上屏?

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小游戏 Bug getSharedCanvas 客户端 6.6.2 1.9.1

子域 index.js

let sharedCanvas = wx.getSharedCanvas();
 
let context = sharedCanvas.getContext('2d');
context.fillStyle = 'red';
context.fillRect(0, 0, 100, 100);
 
wx.onMessage(function (data) {
  console.log(data);
});
 
console.log("HERE");

game.json

{

    "deviceOrientation": "portrait",

    "openDataContext": "src/ranking",

    "networkTimeout": {

        "request": 5000,

        "connectSocket": 5000,

        "uploadFile": 5000,

        "downloadFile": 5000

    }

}

Cocos update 里面的内容①

let openDataContext = wx.getOpenDataContext();
let sharedCanvas = openDataContext.canvas;
let canvas = cc.game.canvas;
let context = canvas.getContext('2d');
context.drawImage(sharedCanvas, 0, 0);


Cocos update 里面的内容

let openDataContext = wx.getOpenDataContext();
let sharedCanvas = openDataContext.canvas;
if (!this.tex) {
    return;
}
 
this.tex.initWithElement(sharedCanvas);
this.tex.handleLoadedTexture();
this.subDomain.spriteFrame = new cc.SpriteFrame(this.tex);

首先因为用 Cocos 创建一个项目作为 SubDomain 占用空间太大了,所以不得不放弃这种做法,试图自己去渲染上屏。

由于我用的是 WebGL 渲染,所以里面会报错。但是因为我的小游戏用了 Camera,而 Cocos Creator 的 Canvas 模式不支持 Camera,所以我只能用 WebGL 了。

于是我后来尝试着结合 Cocos 的教程去用②的方法渲染上屏,但是很可惜也失败了……

请教各位我应该用什么办法才能把子域渲染上屏?

回答关注问题邀请回答
收藏

1 个回答

  • Special
    Special
    2018-05-18

    https://github.com/cocos-creator/creator-docs/blob/master/zh/publish/publish-wechatgame-sub-domain.md


    可以看下 cocos creator 的文档,cocos 的使用问题也可尝试在 github 上咨询 cocos 团队

    2018-05-18
    有用 1
    回复 4
    • 2018-05-23
      好的,谢谢,现在已经解决。
      2018-05-23
      回复
    • 张永兴
      张永兴
      2018-05-27回复

      是如何解决的?我也遇到了这个问题

      2018-05-27
      回复
    • 2018-05-27回复张永兴

      我参考 Cocos Creator 的范例文件(注意那个范例文件打开的时候默认没打开正确的 Scene,要手动去打开),然后项目设置里面把不要的东西都去掉,体积勉强达标。

      2018-05-27
      回复
    • 2018-05-27回复张永兴

      注意 Console 中的【Failed to load resource: the server responded with a status of 404 (Not Found)】和【subcontext code not found】可以忽略。

      2018-05-27
      回复
登录 后发表内容