# Extend - 扩展开发

# 增加一个 Series 类型

假设创建一个 Shadow.js 用于实现阴影的绘制。

// Shadow.js
module.exports = {
    name: 'Shadow', // 绘制时会输出的 Debugger 信息

    handler (config = {}) {
        // config 为绘制时传入的配置
        // this 为 WxCanvas2d 的实例
        return new Promise((resolve, reject) => {
            // 在此处写绘制方法
            resolve() // 绘制完成时调用 resolve
        })
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14

提示

handler 方法必须返回一个 Promise 对象,且必须在函数内调用 resolve,否则绘制任务将无法继续向下执行!

然后在 post.js 中使用它:

import {
    WxCanvas2d
} from 'wx-canvas-2d'
import Shadow from './Shadow.js'

const canvas = new WxCanvas2d()

canvas.create({
    query: '.poster-canvas',
    rootWidth: 750,
    bgColor: '#fff',
    component: this,
    radius: 16
})

canvas.draw({
    series: [
        {
            type: Shadow
            // any config info...
        }
    ]
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 开发扩展插件

假设增加一个 Test.js 插件

module.exports = {
    // 函数名
    name: '',

    // 函数体
    handler () {}
}
1
2
3
4
5
6
7

提示

handler 函数内部 this 可以获取到 WxCanvas2d 实例。

使用 use 方法注册插件

import {
    WxCanvas2d
} from 'wx-canvas-2d'
import Test from './Test.js'

WxCanvas2d.use(Test)
1
2
3
4
5
6

使用自定义方法 test()

const canvas = new WxCanvas2d()

canvas.test()
1
2
3