美文网首页
加载图片数据,以及设置开放域画布的宽高

加载图片数据,以及设置开放域画布的宽高

作者: 广州芦苇科技web前端 | 来源:发表于2018-11-06 12:54 被阅读0次

作者: 何永峰;
标签: 微信小游戏,开放域


加载图片数据,以及初步绘制canvas

加载图片数据

之前我们有提到过主域通过postMessage的API向子域发送消息
我们利用这个也可以提醒开放域及时加载资源
当我们主域已经加载好游戏的时候,可以向开放域中发送消息,提醒加载图片数据
然后在开放域中的onMessage方法中接收到要加载图片的时候调用下面方法


//开放域的index.js
const assetsUrl = {
  panel: "openDataContext/assets/bg_popup.png",
  buttonLetf: "openDataContext/assets/btn_lastpage.png",
  buttonRight: "openDataContext/assets/btn_nextpage.png",
  add:"openDataContext/assets/btn_friend_add.png"
};

/**
 * 是否加载过资源的标记量
 */
let assets = {};
let hasLoadRes;
/**
 * 资源加载
 */
function preloadAssets() {
  let preloaded = 0;
  let count = 0;
  for (let asset in assetsUrl) {
    count++;
    const img = wx.createImage();
    img.onload = () => {
      preloaded++;
      if (preloaded == count) {
        // console.log("加载完成");
        hasLoadRes = true;
      }

    }
    img.src = assetsUrl[asset];
    assets[asset] = img;
  }
}

配置开放域的大小

//主域
    public linkOpenData(message: {}, width?: number, height?: number, data?: Object) {
        console.log('调用开放数据域')
        let basic = {
            isRanking: false,
            text: "egret",
            data: data,
            year: (new Date()).getFullYear(),
            command: "open"
        }

        for (let key in message) {
            basic[key] = message[key];
        }

        let open_data_container = new egret.Sprite();
        let openDataContext = wx.getOpenDataContext();
        const bitmapdata = new egret.BitmapData(window["sharedCanvas"]);
        bitmapdata.$deleteSource = false;
        const texture = new egret.Texture();
        texture._setBitmapData(bitmapdata);
        let bitmap: egret.Bitmap;
        bitmap = new egret.Bitmap(texture);
        bitmap.width = width || GameConfig.getWidth();
        bitmap.height = height || GameConfig.getHeight();
        bitmap.name = "openData";
        open_data_container.addChild(bitmap);
        console.log(bitmap.width + '   ' + bitmap.height)

        egret.startTick((timeStarmp: number) => {
            egret.WebGLUtils.deleteWebGLTexture(bitmapdata.webGLTexture);
            bitmapdata.webGLTexture = null;
            return false;
        }, this);

        openDataContext.postMessage(basic);
        console.log('link_done');
        return open_data_container;
    }
        //再加上简单的三句代码就能把开放域显示在游戏上
        let openDataContext = this.linkOpenData({},"这里传宽度","这里传高度");
        this.openDataContext = openDataContext;
        this.addChild(openDataContext)

获取主域传过来的宽高

    //index.js
    //先根据API,获取离屏画布
    context = sharedCanvas.getContext("2d");
    context.globalCompositeOperation = "source-over";
    //然后在开放域接受宽高的方式
    yfwidth = sharedCanvas.width;
    yfheight = sharedCanvas.height;
    //你就可以根据这个宽高来做适配

相关文章

  • 加载图片数据,以及设置开放域画布的宽高

    作者: 何永峰;标签: 微信小游戏,开放域 加载图片数据,以及初步绘制canvas 加载图片数据 之前我们有提到...

  • Flutter之:图片加载

    一、ClipOval 实现圆形图片 需要设置图片宽高 二、使用cached_network_image缓存加载图片...

  • Canvas-基础

    坐标系 css中的宽高不是画布的大小,当设置了css宽高,画布会随之缩放如果你的canvas的宽高是100,100...

  • Android利用Glide获取图片真正的宽高

    前言 有时候需要获取网络图片的宽高来设置图片显示的大小,很多人会直接利用Glide的加载监听去拿图片的宽高,但是这...

  • js获取图片实际大小的宽高

    简陋的获取图片实际宽高的方式 结果如下: 宽高都是0的这个结果很正常,因为图片的相关数据都没有被加载前它的宽高默认...

  • canvas

    注意:不能用样式设置宽高,使用属性 width height设置宽高 画线 画矩形 画圆形 画布清除与绘制文字 清...

  • FeedTheRatCC开发心得

    1.布局 画布Canvas分辨率宽高设置为320,480。游戏节点均位于画布下。画布设置为fit width,来进...

  • 开放域的适配

    作者: 何永峰;标签: 微信小游戏,开放域适配 回顾 做法 我们从主域传宽高值过去开放域然后在开放域进行处理我的...

  • SDWebImageView图片裁剪

    遇到问题 设置了一个宽高 固定的(1:1 )的 图片 用 sdwebimage 加载的时候显示出来的图片会被...

  • 获取图片的宽高

    1、获取本地图片宽高 2、加载互联网图片 SDWebImage下载图片,图片被缓存到本地获取本地图片的宽高。 网络...

网友评论

      本文标题:加载图片数据,以及设置开放域画布的宽高

      本文链接:https://www.haomeiwen.com/subject/lixuxqtx.html