uni-app中使用hanzi-writer-miniprogram遇到的问题

项目场景:

uni-app中使用hanzi-writer-miniprogram所踩的坑


安装

由于微信APIwx.createCanvasContext停止维护的原因,hanzi-writer-miniprogram并不能正常显示,只能在基础库2.7.7及以下版本正常显示,可下载hanzi-writer-miniprogram@beta版本

npm install hanzi-writer-miniprogram

导入

  1. 在uni-app根目录下新建wxcomponents文件夹
  2. wxcomponents文件夹下新建hanzi-writer-miniprogram文件夹
  3. 把npm下载的包中文件node_modules/hanzi-writer-miniprogram/src下所有文件放入hanzi-writer-miniprogram文件夹下(遇到报错,为了找出问题用了src下的源码,也可引入miniprogram_dist文件夹下的文件)
  4. 把npm下载的包中文件node_modules/hanzi-writer/dist下的hanzi-writer.js也放入hanzi-writer-miniprogram文件夹
  5. 修改hanzi-writer-context.js第一行引入import HanziWriter from './hanzi-writer';
  6. 数据来源于jsdelivr CDN,我是使用cnchar-data生成离线数据放入自己服务器请求的

使用

pages.json下新增自定义组件

"usingComponents": {
	"hanzi-writer": "/wxcomponents/hanzi-writer-miniprogram/hanzi-writer-view"
}

页面

<hanzi-writer id="hz-writer"></hanzi-writer>
import createHanziWriterContext from 'wxcomponents/hanzi-writer-miniprogram/index'

onLoad() {
	this.writerCtx = createHanziWriterContext({
		id: 'hz-writer',
		character: '你',
		page: this
	})
}

问题

报错
在这里插入图片描述
hanzi-writer-context.js文件中,找到this.compthis.writer,定义为全局变量

let comp = null
let writer = null

this.compthis.writer替换成compwriter

模拟器显示正常,真机失效

预览时真机报错illegal param to init BindingPath2D,初步判定为真机不支持Path2D
找到hanzi-writer.js2602行代码

if (usePath2D && global.Path2D) {
	this._path2D = new global.Path2D(this._stroke.path);
} else {
	this._pathCmd = pathStringToCanvas(this._stroke.path);
}

注释此代码,加一行

this._pathCmd = pathStringToCanvas(this._stroke.path);

随缘更新…

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值