首頁 >web前端 >js教程 >微信小程式 Canvas增強元件實例詳解及原始碼分享

微信小程式 Canvas增強元件實例詳解及原始碼分享

高洛峰
高洛峰原創
2017-02-08 14:49:041264瀏覽

這篇文章主要介紹了微信小程式Canvas增強元件實例詳解及原始碼分享的相關資料,WeZRender是一個微信小程式Canvas增強元件,這裡詳細介紹,需要的朋友可以參考下

WeZRender是一個微信小程式Canvas增強元件,基於HTML5 Canvas類別庫ZRender。

微信小程序 Canvas增强组件实例详解及源码分享

使用

WXML:

 <canvas style="width: 375px; height: 600px;" canvas-id="line-canvas-1">canvas>

JS:

 var wezrender = require(&#39;../../lib/wezrender&#39;);

  zr = wezrender.zrender.init("line-canvas-1", 375, 600);

 var circle = new wezrender.graphic.shape.Circle(   
    shape: {
      cx: 50,
      cy: 50,
      r: 50
    },
    style: {
      fill: &#39;red&#39;,
      lineWidth: 10
    }
  });

豐富的圖形選項

內建多種圖形元素(圓形、橢圓、圓環、扇形、長方形、多邊形、直線、曲線、心形、水滴、玫瑰線、Trochoid、文字、圖片等) ,統一且豐富的圖形屬性充分滿足個人化需求。

 var droplet = new wezrender.graphic.shape.Droplet({
    shape: {
      cx: 200,
      cy: 300,
      width: 50,
      height: 50
    },
    style: {
        fill: &#39;#ff9999&#39;
    }
  });
強大的動畫支援

提供promise式的動畫介面和常用緩動函數,輕鬆實現各種動畫需求。

var image = new wezrender.graphic.Image({
    style: {
      x: 0,
      y: 0,
      image: &#39;../../images/koala.jpg&#39;,
      width: 32,
      height: 24,
      text: &#39;koala&#39;
    }
  });
  zr.add(image);

  image.animateStyle(true)
    .when(2000, {
      x: 350,
      y: 450,
      width: 360,
      height: 270,
    })
    .start();

易於擴展


分而治之的圖形定義策略允許擴展圖形元素。

var Pin = wezrender.graphic.Path.extend({
    type: &#39;pin&#39;,
    shape: {
      // x, y on the cusp
      x: 0,
      y: 0,
      width: 0,
      height: 0
    },
    buildPath: function (path, shape) {
      var x = shape.x;
      var y = shape.y;
      var w = shape.width / 5 * 3;
      // Height must be larger than width
      var h = Math.max(w, shape.height);
      var r = w / 2;

      // Dist on y with tangent point and circle center
      var dy = r * r / (h - r);
      var cy = y - h + r + dy;
      var angle = Math.asin(dy / r);
      // Dist on x with tangent point and circle center
      var dx = Math.cos(angle) * r;

      var tanX = Math.sin(angle);
      var tanY = Math.cos(angle);

      path.arc(
        x, cy, r,
        Math.PI - angle,
        Math.PI * 2 + angle
      );

      var cpLen = r * 0.6;
      var cpLen2 = r * 0.7;
      path.bezierCurveTo(
        x + dx - tanX * cpLen, cy + dy + tanY * cpLen,
        x, y - cpLen2,
        x, y
      );
      path.bezierCurveTo(
        x, y - cpLen2,
        x - dx + tanX * cpLen, cy + dy + tanY * cpLen,
        x - dx, cy + dy
      );
      path.closePath();
    }
  });
感謝閱讀,希望能幫助大家,謝謝大家對本站的支持!

更多微信小程式 Canvas增強組件實例詳解及源碼分享相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn