评论

小程序引进hanzi-writer解决问题

解决小程序引进hanzi-writer,hanzi-writer-miniprogram域名,基础库太高不显示问题

1.解决域名不能使用问题:https: / / cdn. jsdelivr . net
2.解决2.7.7以上的基础库不能显示问题,2.9.0基础库不在支持wx.createCanvasContext导致

1.1.https://hanziwriter.org/cn/docs.html#loading-character-data-link官方介绍了可以自己加载有一个名为 hanzi-writer-data 汉字库,地址https://github.com/chanind/hanzi-writer-data中的文件夹data,下载里面的汉字库

1.2.把json文件后缀改成js,export { }

1.3.  
const json = require('../../../utils/半.js')
onLoad() {
    const that = this
    this.writerCtx = createHanziWriterContext({
      id: 'hz-writer',
      character: '半',
      strokeAnimationSpeed: 5// 5x normal speed
      delayBetweenStrokes: 10// milliseconds
      page: this,
      charDataLoader: function (char, onComplete) {
        onComplete(json.data)
      },
      radicalColor: '#1abc9c'//偏旁部首颜色
    });
    this.writerCtx.loopCharacterAnimation();
  },
2.1 安装hanzi-writer-miniprogram安装官网就行,小程序构建npm,打开/miniprogram_npm/hanzi-writer-miniprogram文件夹中的index.js文件
修改var RenderTarget = function()这里面的RenderTarget方法
function RenderTarget(view) {
          _classCallCheck(this, RenderTarget);
          this.view = view;
          this.eventEmitter = new _EventEmitter2.default();
          const query = this.view.createSelectorQuery()
          query.select('#writer-canvas', view).fields({ node: true, size: true })
            .exec((res) => {
              this.canvas = res[0].node
              const dpr = wx.getSystemInfoSync().pixelRatio
              this.canvas.width = res[0].width * dpr
              this.canvas.height = res[0].height * dpr
              this.ctx = this.canvas.getContext('2d')
              this.ctx.scale(dpr, dpr)
            })
          this.ctx = polyfillCanvasCtx(wx.createCanvasContext('writer-canvas', view));
          this.canvas = this.view.selectComponent('#writer-canvas');
        }





最后一次编辑于  2022-09-23  
点赞 0
收藏
评论

3 个评论

  • Materben
    Materben
    星期一 16:49

    楼主好,按照你的修改报这个错误遇到过吗

    星期一 16:49
    赞同
    回复 1
    • Materben
      Materben
      星期二 08:41
      已解决,微信小程序基础库需要降到3以下
      星期二 08:41
      回复
  • 冻冰
    冻冰
    05-20

    果然可以,多谢楼主,可以使用。中文字库可以使用我的地址:

    var getCharDataUrl = function getCharDataUrl(char) {
      return 'https://wxapi.db101.cn/v1/hz/search/' + encodeURIComponent(char);
    };
    


    05-20
    赞同
    回复
  • 风.
    风.
    2022-10-03

    没用

    2022-10-03
    赞同
    回复 1
    • 太阳照耀我
      太阳照耀我
      2022-10-09
      中文字自己放到服务器就行了
      2022-10-09
      回复
登录 后发表内容