8.3 KiB
1. 介绍
cnchar-draw 库的汉字绘制功能封装基于 hanzi-writer, 特此表示感谢!
cnchar-draw 库是用于支持可视化绘制汉字,有 normal,animation,stroke,test 四种模式可选,该库仅在浏览器环境下可用,且该库支持脱离cnchar使用
另外,该库支持繁体字且不依赖 cnahr-trad库
draw 的参数比较繁多,首先需要理解的是,draw 分为四种绘制模式:
- normal: 常规绘制
- animation: 带有绘制动画,支持连续绘制、同时绘制、循环绘制
- stroke: 按汉字笔顺单步绘制
- test: 测试模式,用户可以在容器内绘制汉字,cnchar-draw会检测是否绘制正确
具体使用也可以参考cnchar-draw的类型声明文件:cnchar.draw.d.ts
npm安装
cdn使用
使用
脱离cnchar 独立使用
2. 使用
引入cnchar-draw之后,cnchar上会新增一个draw方法,使用方式如下:
以下是 options 的所有可选参数及描述,具体使用可以在 JSBox 上自行在线尝试
3. 常规绘制实例
绘制模式默认为常规模式 type=normal
4. 笔顺绘制实例
当type=stroke时,笔顺模式启用,该模式会单笔绘制汉字的每一个笔划,并且为每一个笔划生成一个绘制块
5. 动画绘制模式
当type=animation时,动画模式启用,该模式会按笔顺用动画绘制每一个笔划
6. 测验模式
当type=test时,测验模式启用,该模式用户可以在容器内绘制汉字,cnchar-draw会检测是否绘制正确
请用鼠标在绘制出的测验两个字上按顺序画上笔画
7. 绘制动画控制
cnchar.draw 方法会返回一个 writer 对象
declare interface IWriter {
option: IDrawOption;
el: HTMLElement;
type: TDrawType;
text: Array<string>;
writers: Array<HanziWriter>;
startAnimation(): boolean;
pauseAnimation(): void;
resumeAnimation(): void;
restartAnimation(): void; // 重头开始绘制
drawNextStroke(onComplete?: ()=>void): boolean;
}
当 drawType = animation 时,以下几个api可以用户控制动画
绘制模式分为连续绘制 和 单笔画绘制,默认为连续绘制模式
单笔划绘制模式需要 option.animation.autoAnimate = false 且调用 drawNextStroke 方法
7.1 startAnimation
当 option.animation.autoAnimate = false 时,调用该api可以开始绘制,且开启动连续绘制模式
const writer = cnchar.draw('你好', {
type: cnchar.draw.TYPE.ANIMATION,
animation: {
autoAnimate: false,
}
});
writer.startAnimation();
7.2 pauseAnimation & resumeAnimation
当处于 连续绘制模式 时,调用这两个api可以暂停绘制和恢复绘制
const writer = cnchar.draw('你好', {
type: cnchar.draw.TYPE.ANIMATION
});
writer.pauseAnimation();
writer.resumeAnimation();
7.3 restartAnimation
用于重新开始绘制动画
const writer = cnchar.draw('你好', {
type: cnchar.draw.TYPE.ANIMATION
});
writer.restartAnimation();
7.4 drawNextStroke
该 api 用于开启 单笔绘制模式
首先需要使用参数 option.animation.autoAnimate = false
const writer = cnchar.draw('你好', {
type: cnchar.draw.TYPE.ANIMATION,
animation: {
autoAnimate: false,
}
});
writer.drawNextStroke(()=>{
// 当前笔画绘制完成的回调
});
8 汉字404回调
绘制汉字绘制库中不存在的回调
cnchar.draw.onWordNotFound(word=>{
console.log(word);
});
9. 微信小程序中使用
该库由 HanziWriter 驱动,目前仅支持在web环境下使用,如需微信小程序使用请参考 HanziWriter API