画布扩展

  • 插件名:extract
  • npm:tinyjs-plugin-extract

通过 renderer 的插件 extract 对象可以获取画布相关的东东,比如:Image 对象、base64 格式的图片、像素值等等。下面我们分别介绍一下使用姿势:

首先,创建一组精灵到舞台场景中:

Tiny.Loader.add('https://a.alipayobjects.com/g/H5Promo/618-payment-promotion/1.0.4/res/images/mole_tile.json').load(function() {
  // 支地鼠
  var aliMole = new Tiny.Sprite(Tiny.TextureCache['ali_mole.png']);

  // 堵车地鼠
  var dcMole = new Tiny.Sprite(Tiny.TextureCache['dc_mole.png']);
  dcMole.setPosition(40);

  // 排队地鼠
  var pdMole = new Tiny.Sprite(Tiny.TextureCache['pd_mole.png']);
  pdMole.setPosition(80);

  var moles = new Tiny.Container();
  moles.addChild(aliMole);
  moles.addChild(dcMole);
  moles.addChild(pdMole);
  app.run(moles);
});

效果如下:

接着我们取到 extract 对象:

var extract = app.renderer.plugins.extract;

通过 pixels 方法获取像素值

var data = extract.pixels(moles);
console.log(data);
//=> Uint8Array(228480) [0, 0, 0, 0..]

通过 canvas 方法获取 Canvas Dom 对象

var canvasDom = extract.canvas(moles);
console.log(canvasDom);
//=> <canvas width="240" height="238"></canvas>

添加到 body 中看看:

document.body.appendChild(canvasDom);

效果如下:

通过 base64 方法获取 b64 格式图片

var img = extract.base64(moles);
console.log(img);
//=> data:image/png;base64,iVBORw0KGgoAAAANSUh..

通过 image 方法获取 Image 对象

var img = extract.image(moles);
console.log(img);
//=> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUh..">

添加到 body 中和上面的效果一样。

这些方法可以很方便将互动场景中的某个/组显示对象转成图片格式,很适应于截屏。